文档章节

前端面试宝典(2)——JavaScript

小木fan
 小木fan
发布于 2017/09/03 15:31
字数 644
阅读 19
收藏 0

JavaScript

     数据类型

     

         var x;                       //x为undefined

         var x = 4;                //x为number

         var x = "Bill";          //x为字符串

         var x = new Array(); //x为数组

         var x = {firstname:"Bill",lastname:"Gates",id:5566}     //x为对象

         数据类型常见的转换方法

         面向对象——封装、继承

       http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html

       http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html

http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.html

         封装1.原始模式

            猫看做一个对象Object,有name和color属性。

var Cat = {
    name : '',
    color : '',
}

            创建两个实例对象

var cat1 = {};//创建一个空对象
cat1.name = "one";
cat1.color = "yellow";
var cat2 = {};
cat2.name = "two";
cat2.color = "black";

            两个属性封装在一个对象里,缺点:生成多个实例,麻烦;实例和原型没有关系看起来。

          2.原始模式的改进,解决重复代码问题

function Cat(name,color) {
     return {
         name : name,
         color : color,
     }
}

var cat1 = Cat("one","yellow");
var cat2 = Cat("two","balck");

             cat1和cat2仍没有内在的联系,不能看出是出自同一原型对象的实例

           3.构造函数模式

              从原型对象生成实例,js提供了一个构造函数(Constructor)模式

function Cat(name,color){
    this.name = name;
    this.color = color;
}
var cat1 = new Cat("one","yellow");
var cat2 = new Cat("two","black");

alert(cat1.constructor == Cat); //true
alert(cat2.constructor == Cat); //true

          4.构造函数的问题

             浪费内存

function Cat(name,color){
     this.name = name,
     this.color = color,
     this.type = "cat",
     this.eat = function(){alert("eat fish");},
}

var cat1 = new Cat("one","yellow");
var cat2 = new Cat("two","black");

             因为Cat的所有的type和eat都是一样的内容,每创建一个实例对象,就会生成一个,占内存不高效

           5.prototype模式

              js规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有的属性和方法,都会被构造函数的实例继承。

function Cat(name,color) {
     this.name = name,
     this.color = color,
}
Cat.prototype.type = "cat";
Cat.prototype.eat = function(){alert("eat fish");};

var cat1 = new Cat("one","yellow");
var cat2 = new Cat("two","black");

              每个实例的type和eat,都是同一个内存地址,指向prototype对象。

            继承

         闭包

         插件

         作用域

          1.全局变量拥有全局作用域,函数内声明的变量只在函数体内使用,作用域是局部的。

          2.局部变量优先级高于全局变量,未用var声明的变量为全局变量,无论是在内部还是外部定义。

          3.不同于C,JS不存在块级作用域。

          4.函数变量作用域在函数内部皆有效,无论是在哪定义。

          

         跨域

         原型链

         模块化

         自定义事件

         内存泄漏

         事件机制

         异步装载回调

         模板引擎

         Nodejs

         JSON

        ajax

 

 

 

© 著作权归作者所有

共有 人打赏支持
小木fan
粉丝 1
博文 52
码字总数 13186
作品 0
绵阳
私信 提问
每个JavaScript工程师都应懂的33个概念

摘要: 基础很重要啊! 原文:33 concepts every JavaScript developer should know 译文:每个 JavaScript 工程师都应懂的33个概念 作者:stephentian Fundebug经授权转载,版权归原作者所有...

Fundebug
10/30
0
0
JavaScript开发者应懂的33个概念

简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardomso 创立,英文版项目地址在这里。 ...

大灰狼的小绵羊哥哥
10/22
0
0
前端学习之路(从入门到入坑...)

学习前端两年多了,拿了阿里巴巴实现offer,想结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限,不能保证面面俱到,只是作为入门参考...

阿小庆
06/14
0
0
用JavaScript的5个原因

你可能不喜欢JavaScript,也有一个很好的理由。自从90年代末,JavaScript就一直处于崛起阶段,主要是在网站和应用程序开发方面的崛起。 早期不同浏览器之间的不兼容性导致了需要开发各种库,...

samday
2014/05/04
0
0
让前端的子弹飞-TypeScript

“ Any application that can be written in JavaScript,will eventually be written in JavaScript.” -- Jeff Atwood 2007 “ 前端,文也; 后端,武也; 全栈,文武双全者也; 前端全栈者...

06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
10
0
ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部