zoukankan      html  css  js  c++  java
  • 《JavaScript语言精粹》读书笔记

    第三章:对象

    //1.定义一个方法 method
    Function .prototype.method=function(name, func){  
      
                  this.prototype[name]=func;  
      
                  return this;  
    }  
        
    //2.给Object增加一个create方法,这个方法创建一个使用原对象作为其原型的新对象  
      
    Object.create=function(o){  
      
           var F=function(){};  
      
           F.prototype=o;  
      
           return new F();  
      
    }    
      
    //继承  
      
    Function.method(‘inherits’, function(Parent){  
      
           this.prototype=new Parent();  
     
           return this;   
    });  
    
    
    

    1)JS中的对象是name/value对的集合并拥有一个连到原型对象的隐藏连接。
    2)对象字面量产生的对象连接到Object.prototype;
    3)引用:对象通过引用来传递,他们永远不会被复制。
    4)函数就是对象。
    5)函数对象连接到Function.prototype(该原型的对象本身连接到Object.prototype)。
    6)函数在创建的时候会附加2个隐藏属性:函数的上下文(包括函数实参、函数形参、内嵌函数、内部变量等)和实现函数行为的代码
    Object

    1. proto: Object
    2. constructor: function Object() { [native code] }
    3. hasOwnProperty: function hasOwnProperty() { [native code] }
    4. isPrototypeOf: function isPrototypeOf() { [native code] }
    5. propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
    6. toLocaleString: function toLocaleString() { [native code] }
    7. toString: function toString() { [native code] }
    8. valueOf: function valueOf() { [native code] }

    反射

    检查对象并确定对象有什么属性是很容易的事情,只要试着去检索该属性并验证取得的值,typeof操作符对确定属性的类型很有帮助。
    1)检查属性的类型:typeof

    typeof flight.number    //'number'
    typeof flight.status    //'string'
    typeof flight.manifest  //'undefined'
    
    

    请注意原型链中的任何属性也会产生一个值:

    typeof flight.toString     //'function'
    typeof flight.constructor  //'function'
    

    2)检查属性:hasOwnProperty

    flight.hasOwnProperty('number')       //true
    flight.hasOwnProperty('constructor') //false
    

    第四章:函数

    1)除了声明时定义的形式参数,每个函数还接收2个附加的参数:this和arguments
    2)一个函数总会返回一个值,如果没有指定返回值,则返回undefined。如果函数调用时在前面加上了new前缀,且返回值不是一个对象,则返回this。
    函数字面量:可以通过函数字面量来创建:
    包括4个部分:
    1

    //创建一个名为add变量,并用来把两个数字相加的函数赋值给它
    var add=function(a,b){
    return a+b;
    }
    
    

    【this】

    this在JS中有4中调用模式:
    ①方法调用模式:当一个函数被保存为对象的一个属性时,就称它是一个方法。当一个方法被调用时,this被绑定到该对象。
    ②函数调用模式:当一个函数并非一个对象的属性时,它就是被当做一个函数来调用。这个模式下的this被绑定到全局对象window,函数实际是window的属性。
    ③构造器调用模式:如果在一个函数前面带上new来调用,则背地里会创建一个连到该函数prototytpe成员的新对象,同时this会被绑定到那个新对象上。
    ④apply调用模式:允许选择this的值,apply第一个参数绑定给this的值,第2个参数是传给调用函数的参数数组。

    第五章:继承

    继承的两个作用:1、代码重用;2、类型系统规范。

    当一个函数对象呗创建时,Functinon构造器产生的函数对象会运行类似下面的代码:

    
    this.prototype={constructor:this};
    

    新函数对象被赋予一个prototype属性,其值是包含一个constructor属性且属性值为该新函数的对象。该prototype对象是存放继承特征的地方。

  • 相关阅读:
    vue-cli 中stylus写样式莫名报错?
    Github桌面端安装慢问题
    firefox无法使用yslow的解决方案
    vue安装找不到命令
    css解惑
    vs2015中ctrl+shift+F进行“在文件中查找”,有时候无效?
    WebStrom安装了angularjs插件,但是没有语法提示
    jq版本更新后无live函数的处理.
    word每次打开都要选择文档类型
    百度编辑器1.4.3 .net版在vs2008的使用方法
  • 原文地址:https://www.cnblogs.com/QingFlye/p/4511402.html
Copyright © 2011-2022 走看看