如何查找函数中的属性

我想知道一个函数是否具有特定的属性。“in”运算符应该已经完成了这项工作:MSD 引用:


如果指定的属性位于指定对象或其原型链中,则 in 运算符返回 true。


那么 - 你能解释一下这段代码的结果吗?


function Shape() {

  aaa = 10

}

Shape.prototype.bbb = 20


function 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???```


江户川乱折腾
浏览 75回答 1
1回答

Smart猫小萌

in不检查自身的属性class。它检查类实例中的属性。function Shape() {  aaa = 10}Shape.prototype.bbb = 20function Square() {}Square.prototype = Object.create(Shape.prototype)Square.prototype.constructor = Square;const instance = new Square();console.log('aaa' in instance) // falseconsole.log('bbb' in instance) // true在这里,当您将属性分配给某些原型时,function并不意味着该函数将具有这些属性。原型上的这些属性将添加到对象创建的实例中。是的,如果您将属性分配给函数本身,那么它将显示使用infunction test(){}test.prototype.x = 3;test.something = 5console.log(Object.keys(test)) //["something"]console.log("something" in test) //true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript