1.简单的原型链:
var song= function(){
this.a =5;
this.b=6;
}
this.a =5;
this.b=6;
}
//function song (){
this.a=5;
}
song.prototype={
add:function(a,b){return a+b+this.a+this.b;},
jian:function(a,b){return b-a;}
}
var jum= function(){
this.name="WTF";
}
jum.prototype=new song();
song.prototype={
add:function(a,b){return a+b+this.a+this.b;},
jian:function(a,b){return b-a;}
}
var jum= function(){
this.name="WTF";
}
jum.prototype=new song();
//让jum类继承song的一个实例(包括属性和方法) 若只想song的方法,保持其属性的私有性质,就可以设置 jum.prototype =song.prototype;
jum.prototype.constructor=jum; //如果没有将指向本身,则prototype.constructor就指向了一个空对象
jum.prototype.constructor=jum; //如果没有将指向本身,则prototype.constructor就指向了一个空对象
调用方法:
var songjum= new jum();
songjum.add(3,4);
songjum.jian(2,5);
2.属性查找:属性在查找的时候是先查找自身的属性,如果没有再查找原型,再没有,再往上走,一直插到Object的原型上。
3.hasOwnProperty
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
foo.hasOwnProperty('bar'); // 总是返回 false
// 使用{}对象的 hasOwnProperty,并将其上下为设置为foo
{}.hasOwnProperty.call(foo, 'bar'); // true