1、介绍几个关键词
1、constructor
- 每个原型都有一个 constructor 属性指向关联的构造函数
function Test() {
}
console.log(Test === Test.prototype.constructor); // true
2、prototype
- 显式原型
- 函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型
function Test() {
}
Test.prototype.name = 'fhj';
var test = new Test();
3、proto
- 隐式原型
function Test() {
}
var test = new Test();
console.log(Test.__proto__ === Test.prototype); // true
2、一个图说明它们的关系
1、查找属性时先在自身查找
2、找不到 沿着__proto__ 向上一级寻找
3、需要注意 Object.prototype = null 这就是食物链顶端 没了
4、需要注意 js继承是 对另一个对象 属性和函数的委托
5、这个连起来的链条 就是原型链