JS中对象的原型



  • 1. 原型(Prototype)

    在开发者工具控制台创建一个对象时会看到

    在 obj 上多出了一个 __proto__属性

    可以发现__proto__属性也是一个对象,里面包含了一些熟悉的方法,比如toStringvalueOf__proto__链接到的是Object对象的原型。

    var anotherObject = {
    	a: 1
    };
    anotherObject.__proto__ === Object.prototype //true
    

    特殊对象的__proto__

    function Func(){}
    Func.__proto__ === Function.prototype //true
    
    var arr = []
    arr.__proto__ === Array.prototype  //true
    

    <br>

    2. 对象的属性访问

    当试图在一个对象上进行属性访问,而对象又没有该属性时,对象内部的__proto__定义了下一步应该在哪里找到它。而这种对象到对象的串行链接定义了对象的“原形链”,它在在解析属性时发挥作用。访问一个对象的属性将顺着原型链依次向上寻找,如果找到了就停止

    3. 创建原型链接

    var anotherObject = {
    	a: 1
    };
    // 创建一个链接到 `anotherObject` 的对象
    var myObject = Object.create( anotherObject );
    
    myObject.__proto__ === anotherObject  //true
    myObject.a //1
    

    4. 总结

    1. Object 所有对象都可通过原型链访问到
    2. Function 所有函数可通过原型链访问到,所以函数可以使用 bind , apply 这些方法;同样Array 所有数组可通过原型链访问到,所以数组可以使用 push , pop 这些方法
    3. 对象的__proto__属性指向原型, __proto__ 将对象和原型连接起来组成了原型链。访问一个对象的属性将顺着原型链依次向上寻找,找到了就停止,反之将一直遍历到原型链顶端
    4. 我们也可以通过 Object.create()函数创建原型链接


  • 类也是链式继承的


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待