原型链
- 创建对象的几种方法
- 原型、构造函数、实例、原型链
- instanceof原理
- new运算符
创建对象的几种方法
原型链类创建对象有几种方法:
-
var o1 = {name:"01"}
var o11 = new Object({name:"o11"})
-
var M = function(){
this.name = "o2"
}
var o2 = new M()
-
var P = {name: "o3"}
var o3 = Object.create(P)
关系
-
任何一个函数 只要被new使用了,那么它就可以叫做构造函数,也就是说,函数都是构造函数,函数都有一个prototype属性,prototype里有一个constructor,这个constructor === 这个函数本身 -
一个实例.__proto__ 和它的构造函数的原型对象是一样的 -
原型链:原型对象通过__proto__ 属性一层一层往上找 -
许多实例共同的东西就是原型对象,在原型对象上定义的方法可以被所有的实例共有 -
只有函数有prototype,对象没有prototype -
只有实例对象有__proto__ ,函数即是函数也是一个对象,所以也会有__proto__ ,函数的__proto__ 是Function.prototype,也就是说函数也是一个Function的实例
instanceof原理
根据实例的__proto__ 往下找,然后对比原型对象的constructor来判断
|