我想向Object添加一个方法,但现在所有的数组和对象都有它。当我使用for(.. in ..)
时,它会被启用,这对我的软件来说是一个问题。所以,我需要让我的方法不可枚举。
我知道有一个Object.defineProperty()
,但旧的浏览器(现在仍然存在)以及Konqueror的最新版本都不支持它。
还有另一种方法可以使方法不可枚举吗?
答案 0 :(得分:3)
没有。这就是为什么在没有立即检查for..in
的情况下使用JavaScript的hasOwnProperty
被认为是不好的做法。即,你应该总是这样做:
for (var item in obj) {
if (obj.hasOwnProperty(item)) {
// ...
}
}
如果您使用for..in
而不进行hasOwnProperty
检查,JSLint等工具会在您的代码中报告错误。
答案 1 :(得分:0)
对于ECMAScript 3(在旧浏览器中使用),您无法更改可枚举属性 如果要过滤方法,也许可以检查对象的类型(.. in ..)。