gpt4 book ai didi

javascript - 对 "hasOwnProperty"感到困惑,无法检测是否存在函数

转载 作者:行者123 更新时间:2023-12-02 08:00:57 24 4
gpt4 key购买 nike

我确定这是重复的,但我找不到合适的搜索词来找到答案。

我正在尝试使用 hasOwnProperty() 来确定对象上是否存在某个函数。我知道还有其他方法可以做到这一点,但我想了解为什么该方法无法按我预期的方式工作。

我在 Chrome 开发工具控制台中输入了这个:

window.hasOwnProperty("getSelection")
<- true

window.getSelection().hasOwnProperty("empty")
<- false

我不明白的是为什么 hasOwnProperty("empty") 返回 false,而 存在于 Selection 对象,我可以调用它。

window.getSelection().empty()  // Returns no errors

最佳答案

getSelection 返回一个 Selection 对象实例,它有一个 Selection.prototype内部原型(prototype)。原型(prototype)上有 empty 方法;它不在实例本身上:

const sel = window.getSelection();
console.log(
Object.getPrototypeOf(sel) === Selection.prototype,
Selection.prototype.hasOwnProperty("empty")
);

如果你想自己实现这种东西:

class Foo {
method() {
console.log('method');
}
}
const f = new Foo();
f.method();

console.log(
f.hasOwnProperty('method'),
Foo.prototype.hasOwnProperty('method')
);

关于javascript - 对 "hasOwnProperty"感到困惑,无法检测是否存在函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57426987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com