原型链:对象使用方属性或法的时候 查找这个属性的规则
1、改变前:
function Person(name,age,sex){
this.n = name;
this.a = age;
this.s = sex;
Person.prototype.sex ="女"
}
let p1 = new Person("小黄",19,"男")
console.log(p1);
console.log(p1.sex);
结果:Person {n: '小黄', a: 19, s: '男'}
女
2、当this中没有实例对象中对应的属性时:
function Person(name,age,sex){
this.n = name;
this.a = age;
}
let p1 = new Person("小黄",19,"男")
console.log(p1);
console.log(p1.sex);
结果:Person {n: '小黄', a: 19}
undefind
3、当this中没有对应属性而它所在的原型对象上有该属性时:
function Person(name,age,sex){
this.n = name;
this.a = age;
Person.prototype.sex ="女"
}
let p1 = new Person("小黄",19,"男")
console.log(p1);
console.log(p1.sex);
结果:Person {n: '小黄', a: 19}
女
4、当你想要找的属性既不存在this中也不存在它所在的原型对象中 ,也不存在Object中的时候。
function Person(name,age,sex){
this.n = name;
this.a = age;
}
let p1 = new Person("小黄",19,"男")
console.log(p1);
console.log(p1.sex);
结果:Person {n: '小黄', a: 19}
undefind
5、当该属性不存在this也不存在它所在全部的原型对象中,但存在Object中时 ,toString是Object中的属性。
function Person(name,age,sex){
this.n = name;
this.a = age;
}
let p1 = new Person("小黄",19,"男")
console.log(p1);
console.log(p1.toString);
结果:Person {n: '小黄', a: 19}
ƒ toString() { [native code] }