1.原型链:
访问一个对象的属性时:
先在自身属性中查找,找到返回,如果没有,再沿着__proto__这条链上查找,找到返回
如果最终没有找到,返回undefined
__proto__别名:隐式原型链
作用:查找对象的属性(方法)
function Fn(){
this.test1=function(){
console.log('test1()')
}
}
Fn.prototype.test2=function(){
console.log('test2()')
}
var fn=new Fn()
fn.test1()
fn.test2()
console.log(fn.toString)
fn.test3()
原型链(图解):
构造函数_原型_实体对象的关系(图解):
构造函数_原型_实体对象的关系(图解2):
原型链_中的属性问题:
1.读取对象的属性值时:会自动到原型链中查找
2.设置对象的属性值时:不会查找原型链,如果当前对象中没有此属性,直接添加此属性并设置其值
3.方法一般定义在原型中,属性一般通过构造函数定义在对象本身上
代码实例解释区:
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.setName=function(name){
this.name=name;
}
Person.prototype.sex='女';
var p1=new Person('tom',12)
p1.setName('jack')
console.log(p1.name,p1.age,p1.sex)
p1.sex='男'
console.log(p1.name,p1.age,p1.sex)
var p2=new Person('bob',23)
console.log(p2.name,p2.age,p2.sex)