我的理解是,Object.hasOwnProperty
方法检查对象是否具有它自己的属性名称,即非继承属性。这意味着,只要属性a就应该返回false。 b。不存在或b。如果它被继承,则为。JavaScript:为什么Object.hasOwnProperty方法的行为如此?
如果我错了,请纠正我,但除非这不使用经典继承,否则bar
在下面的代码中继承自Foo
?为什么当propname
属性是继承的属性时hasOwnProperty
方法返回true?我在这里弄错了什么?
另外,如何使用Foo
对象上的hasOwnProperty
?在检查Foo
对象时,此处的代码返回false
。
function Foo() {
this.propname = 'test';
}
var bar = new Foo();
console.log(bar.hasOwnProperty('propname')); // returns true
console.log(Foo.hasOwnProperty('propname')); // returns false
的这条线2 ===栏上,没有原型属性这里设置。通过设置Foo.prototype.propname = ...添加原型。# – Douglas
Bar是Foo的一个实例,而不是后代。 – joews
@Douglas请你详细说明一下吗?为什么这需要原型呢?该方法正在检查属性... – shmuli