js prototype
JS 的原型
对象原型
对象的原型可以通过 Object.getPrototypeOf(obj) 或者 obj.__proto__(弃用)得到
区别对象的原型 obj.__proto__ 和构造函数的 prototype 属性
Object.getPrototypeOf(new Foobar()) 与 Foobar.prototype 指向同一个对象
对象原型 即 对象的原型 即 对象的原型对象,因为原型也是一个对象
区别 doSomething() 和 new doSomething()
原型对象:构造函数的prototype属性所指向的对象
Object.create() 从指定的原型对象创建一个新的对象
1
var car = Object.create(Car.prototype)
constructor 是构造函数自带的属性,可以通过 constructor.name 获取构造器名字
js 通过原型链向上查找属性
原型的
constructor
属性指向构造函数,构造函数又通过prototype
属性指回原型
new 操作符
用法:
new constructor[([arguments])]
new 原理
- 创建一个空的对象(即 {} )
- 将对象的 __proto__ 指向构造函数的prototype,即继承
- 带参数调用构造函数的constructor(即构造函数本身),但是this的值指向刚创建的那个对象
- 如果constructor有返回,则 new 的结果就用他的返回值,如果没有就使用this