将方法添加到对象优先级,但不要将其作为属性

时间:2011-07-10 16:19:47

标签: javascript prototype-programming

对象有Object.toString,一种可以在任何对象上调用的方法。在遍历属性列表时,或者只是执行console.log(obj)时,您不会看到toString出现为对象的属性。它是隐藏的。

我想使用Object.prototype.myMethod在Object原语上添加一个新方法。但是,每次迭代对象时,我都不希望它出现。我希望它隐藏起来。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

你可以使用ECMAScript 5的defineProperty [docs]

来做到这一点
Object.defineProperty(Object.prototype, 'myMethod', {
    value: function() {
        // your function
    },
    enumerable: false // default is already `false`
});

显然这在不支持ES5的浏览器中不起作用(尤其是IE8及更早版本)。