• JavaScript精粹


    序:好书是需要不断品读的!再读语言精粹,顺便做点笔记。

    1.NaN是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它自己。检测是否为NaN:  isNaN(number)。

    2.JavaScript的简单类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。

    3.每个对象都连接到一个原型对象,并且它可以从中继承属性。所以通过对象字面量创建的对象都连接到Object.prototype这个Javascript中标准的对象。

    当你创建一个新对象时,你可以选择某个对象作为它的原型。Javascript提供的实现机制杂乱而复杂,但其实它可以被明显的简化。例:

    Object.beget = function(o){
    
             var F = function(){};
    
             F.prototype = o ;
    
             return new F();
    
    }

    4.hasOwnProperty用来检查是否是对象的属性:  flight.hasOwnProperty('number')。

    5.delete运算符可以用来删除对象的属性。如果对象包含该属性,那么该属性就会被移除。它不会触及原型链中的任何对象。

    删除对象的属性可能会让来自原型链中的属性透现出来:

    children.name  //'Moe'
    //删除children的name属性,从而暴露出原型的name属性
    delete children.name 
    children.name  //'Curly'

     6.this解析:

    this的值取决于调用的模式。在JavaScript中一共有4中调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。

    方法调用模式:

    当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到该对象。如果调用表达式包含一个提取属性的动作,那么它就被当做一个方法来调用。

    //创建myObject对象。
    //increment方法接受一个可选的参数。如果参数不是数字,那么默认使用数字1
    
    var myObject = {
          value:0,
          increment: function(inc){
                this.value +=typeof inc === 'number'?inc:1;
          }
    }
    
    myObject.increment();
    console.log(myObject.value);  //1
    
    myObject.increment(2);
    console.log(myObject.value);   //3

    方法可以使用this访问自己所属的对象,所以它能从对象中取值或对对象进行修改。this到对象的绑定发生在调用的时候。这个"超级"延迟绑定使得函数可以对this高度复用。通过this可取得他们所属对象的上下文的方法称为公共方法。

    函数调用模式:

    当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用的

    以此模式调用函数时,this被绑定到全局对象。

    //给myObject增加一个double方法。
    myObject.double = function(){
        var that = this;  
        var helper = function(){
            //因为helper不是属性,所以如果这里用this代表的全局的
            that.value = add(that.value,that.value);
        }
        helper(); //以函数形式调用helper
    }

    构造器调用模式:

    如果在一个函数前面带上new来调用,那么背地里将会创建一个连接到该函数的prototype成员的新对象,同时this会被绑定到那个新对象上。

    var Quo =  function(string){
         this.status = string;
    }
    //给Quo的所有实例提供一个名为get_status的公共方法
    Quo.prototype.get_status = function(){
         return this.status;
    }
    //构造一个Quo实例
    var myQuo = new Quo("confused");
    console.log(myQuo.get_status());  // 显示confused

    Apply调用模式:

    apply方法让我们构建一个参数数组传递给调用函数。它也允许我们选择this的值。apply方法接收两个参数,第一个是要绑定给this的值,第二个就是一个参数数组。

    //构造一个包含两个数字的数组,并将它们相加。
    var array = [3,4];
    var sum = add.apply(null,array);
    //构造一个包含status成员的对象。
    var statusObject = {
       status:'A-OK'
    };
    
    //statusObject 并没有继承自Quo.prototype,但我们可以在statusObject上调用get_status方法,尽管statusObject并没有一个名为get_status的方法。
    var status = Quo.prototype.get_status.apply(statusObject);

    7.Arguments

    当函数被调用时,会得到一个免费配送的参数,那就是arguments数组。函数可以通过此参数访问所有它被调用时传递给它的参数列表,包括哪些没有被分配给函数声明时定义的形式参数的多余参数。

    因为语言的一个设计错误,arguments并不是一个真正的数组。它只是一个类似数组的对象。arguments拥有一个length属性,但它没有任何数组的方法。

    比较忙,暂时先写那么多,后补

  • 相关阅读:
    20155325 2016-2017-2 《Java程序设计》课程总结
    实验五 网络编程与安全
    2017-2018-1 20155314 20155323   实验一  开发环境的熟悉
    2017-2018-1 20155323 《信息安全系统设计基础》第4周学习总结
    2017-2018-1 20155323 《信息安全系统设计基础》第3周学习总结
    # 2017-2018-1 20155323 《信息安全系统设计基础》第2周学习总结
    2017-2018-1 20155323 《信息安全系统设计基础》第1周学习总结
    C语言复习20170826
    C语言复习20170821
    C语言复习20170805
  • 原文地址:https://www.cnblogs.com/showtime813/p/4760926.html
Copyright © 2020-2023  润新知