(1)
判断是否为自身属性,而非原型继承来的,用hasOwnPrototype()
function A( ){
this.a=3;
this.b=4;
}
A.prototype.n=10;
var m=new A( );
m.hasOwnProperty("a") // 结果为true
m.hasOwnProperty("n") // 结果为false
注意hasOwnPrototype(“a”)不可写成hasOwnPrototype(a),后面形式就将a看成了一个变量,会提示未定义,所以引号不可少。
(2)
任何一个对象,可以继承来自原型中的属性,同时还要去Object.prototype中去寻找,这是最后一站,因为所有的对象的原型就是它。所以:
function A( ){
this.a=3;
this.b=4;
}
A.prototype.n=10;
Object.prototype.g=30;
var m=new A( );
alert(m.g) // 结果为30,虽然自身和A.prototype中都未定义。
A.prototype是个原来型对象,而凡是对象,则Object.prototype都是它们的原型。
(3)
function A(){ },这是个构造函数,也可写成var A=function(){ }
函数也可以看成对象,那么对象就有自己的属性。constructor就是创建函数后,马上默认有的属性,它指向对象的原型。
函数是对象,也可以拥有方法,其中常见的A.call(B),这里的call( )方法就是函数的常用方法。
(4)
(5)