原型与原型链

原型规则

  1. 所有的引用类型(数组、对象、函数), 都具有对象特性,即可自由扩展属性。
  2. 所有的引用类型(数组、对象、函数), 都有一个__proto__属性,属性值是一个普通对象。
  3. 所有的函数,都有一个prototype属性,属性值也是一个普通的对象。
  4. 所有的引用类型(数组、对象、函数), __proto__属性值指向它的构造函数的prototype属性值。
  5. 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的__proto__(即它的构造函数的prototype)中寻找。

f instanceof Foo的判断逻辑

f__proto__一层一层往上,能否对应到Foo.prototype

判断数组

Array.isArray(arr)
Object.prototype.toString.call(arr) === "[object Array]"

描述new一个对象的过程

  1. 创建一个新对象
  2. this指向这个新对象
  3. 执行代码,即对this赋值
  4. 返回this

原型DEMO




  
  
  
  Document


  
32434

你可能感兴趣的:(原型与原型链)