我想知道一个函数是否具有特定的属性。“in”运算符应该已经完成了这项工作:MSD 引用:如果指定的属性位于指定对象或其原型链中,则 in 运算符返回 true。那么 - 你能解释一下这段代码的结果吗?function Shape() { aaa = 10}Shape.prototype.bbb = 20function Square() {}Square.prototype = Object.create(Shape.prototype)Square.prototype.constructor = Square;console.log('aaa' in Shape) // false???console.log('bbb' in Shape) // false???console.log('aaa' in Square) // false???console.log('bbb' in Square) // false???```
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
in不检查自身的属性class。它检查类实例中的属性。
function Shape() {
aaa = 10
}
Shape.prototype.bbb = 20
function Square() {}
Square.prototype = Object.create(Shape.prototype)
Square.prototype.constructor = Square;
const instance = new Square();
console.log('aaa' in instance) // false
console.log('bbb' in instance) // true
在这里,当您将属性分配给某些原型时,function并不意味着该函数将具有这些属性。原型上的这些属性将添加到对象创建的实例中。
是的,如果您将属性分配给函数本身,那么它将显示使用in
function test(){
}
test.prototype.x = 3;
test.something = 5
console.log(Object.keys(test)) //["something"]
console.log("something" in test) //true
添加回答
举报
0/150
提交
取消