/**
* 原型链
*
* js成员的查找机制(原型链查找机制)
* 1. 当访问一个对象的属性(包括方法)时候,首先查找这个对象本身有没有改属性 例如 yy.sex = '男' console.log(yy.sex)
* 2. 如果没有就查找它的原型(也就是__ptoto__指向的prototype原型对象) 例如: Star.prototype.sex = '男'
* 3. 如果还没有就查找原型对象的原型(Object的原型对象)例如: Object.prototype.sex = '男'
* 4. 以此类推, 一直找到Object为 null
* 5. __protp__对象原型的意义就在于为对象成员查找机制提供一个方向
* 6. 都有的话执行就近原则
*/
function Star(name, age) {
this.name = name;
this.age = age;
}
Star.prototype.sing = function() {
console.log('唱歌')
}
var yy = new Star('yy',34);
// 1. 只要对象有__proto__原型, 就会指向原型对象 Object.prototype
console.log(Star.prototype) //Object sing: ƒ () constructor: ƒ Star(name, age) __proto__: Object
// 2. 我们Star原型对象里面的__proto__原型指向的事 Object.prototype
console.log(Star.prototype.__proto__ === Object.prototype) //true
// 3. Object原型对象 prototype.__proto__ 指向的为null
console.log(Object.prototype.__proto__) // null