JavaScript的成员查找机制(规则)
1.当访问一个对象的属性(包括方法)时,首先查找这个对象本身有没有这个属性
2.如果没有就查找它的原型(也就是__proto__指向的prototype原型对象)
3.如果还没有就查找原型对象的原型(Object的原型对象)
4.依次类推一直找到Object为止(null)
5.__proto__对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线
原型链示意图如下:
举例1 有ldh.sex='男'
function Star(uname,age){
this.uname = uname;
this.age = age; //公共属性
}
Star.prototype.sing = function(){
console.log('我会唱歌'); //公共方法
}
var ldh = new Star('刘德华',18);
var zxy = new Star('张学友',19);
ldh.sex = '男';
当我们console.log(ldh.sex)可以得到性别为“男” 因为有ldh.sex='男'
举例2 若没有ldh.sex='男',则用原型对象prototype
function Star(uname,age){
this.uname = uname;
this.age = age; //公共属性
}
Star.prototype.sing = function(){
console.log('我会唱歌'); //公共方法
}
Star.prototype.sex = '男';
var ldh = new Star('刘德华',18);
这样console.log(ldh.sex);也可以得到性别。
举例3 用Object.prototype
function Star(uname,age){
this.uname = uname;
this.age = age; //公共属性
}
Star.prototype.sing = function(){
console.log('我会唱歌'); //公共方法
}
Object.prototype.sex = '男';
var ldh = new Star('刘德华',18);