前端面试宝典(2)——JavaScript
前端面试宝典(2)——JavaScript
小木fan 发表于4个月前
前端面试宝典(2)——JavaScript
  • 发表于 4个月前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 钻研其中原理,高效地学习

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

 

 

 

共有 人打赏支持
粉丝 1
博文 51
码字总数 13186
×
小木fan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: