繁体   English   中英

JavaScript:如何在不使用Object.defineProperty的情况下定义不可枚举的方法?

[英]JavaScript: How to Define a Non-Enumerable Method without using Object.defineProperty?

我想为Object添加一个方法,但现在所有的数组和对象都有它。 当我使用for(.. in ..) ,它被驱使,这对我的软件来说是一个问题。 所以,我需要让我的方法不可枚举。

我知道有一个Object.defineProperty() ,但它不受旧浏览器(仍然存在)甚至Konqueror的最新版本的支持。

还有另一种方法可以使方法不可枚举吗?

不。这就是为什么在没有立即检查hasOwnProperty情况下使用JavaScript for..in被认为是不好的做法。 即,你应该总是:

for (var item in obj) {
    if (obj.hasOwnProperty(item)) {
        // ...
    }
}

如果在没有hasOwnProperty检查的情况下使用for..in JSLint等工具将在代码中报告错误。

对于ECMAScript 3(在旧浏览器中使用),您无法更改可枚举属性。
如果要过滤方法,也许可以检查对象的类型(.. in ..)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM