如何在不使用Object.defineProperty的情况下定义一个非枚举方法
JavaScript: How to Define a Non-Enumerable Method without using Object.defineProperty?
我想添加一个方法对象,但现在所有的数组和对象都有它。当我使用for(.. in ..)
时,它是枚举的,这是我的软件的一个问题。所以,我需要让我的方法不可枚举
我知道有一个Object.defineProperty()
,但它不支持旧的浏览器(仍然存在),甚至最新版本的Konqueror。
是否有其他方法使方法不可枚举?
No。这就是为什么使用JavaScript的for..in
而不立即检查hasOwnProperty
被认为是不好的做法。也就是说,你应该总是这样做:
for (var item in obj) {
if (obj.hasOwnProperty(item)) {
// ...
}
}
如果你使用for..in
而不检查hasOwnProperty
, JSLint之类的工具会在你的代码中报告一个错误。
对于ECMAScript 3(在旧浏览器中使用),您不能更改enumerable属性。
如果您想过滤方法,也许您可以检查for(..in..)中对象的类型。
相关文章:
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何定义一个模块并使用它来分离js文件
- 可以定义一个中缀函数吗
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- 如何在Javascript中定义一个简单的自动重启倒计时
- 有没有任何情况下,一个方法不应该是原型方法
- 在 Angular 指令中定义一个用于 ng-click 的函数
- Ember.js-定义一个全局函数,该函数可以向操作返回值
- 使用下划线一个接一个地替换每个项目(li)
- 如果我们使用:运算符在函数内部定义一个属性,会发生什么
- Javascript-通过按下另一个元素来移动元素
- 如何在函数内部定义一个变量以供事件调用
- 定义一个函数,然后为其添加属性
- 如何用以下结构定义一个空的javascript对象,以便我可以动态地将数据插入其中
- Javascript:我如何定义一个对象'的属性
- ReferenceError:utag在Firefox 45.0.1中并不是仅在私有模式下定义的
- 如何在不重复的情况下将一个范围中定义的函数添加到另一个范围
- require.js:我如何加载一个模块,它在不同的名称下定义了一个名称
- 如何在不使用Object.defineProperty的情况下定义一个非枚举方法
- 在JavaScript中调用一个函数,该函数是在与第二个脚本不同的脚本下定义的