江戶川亂折騰
2024-01-18 16:03:53
我想知道一個函數是否具有特定的屬性?!癷n”運算符應該已經完成了這項工作: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
提交
取消