我想知道为什么规范定义了Object.keys而不是Object.prototype.keys?如果API是一致的,那肯定会更好,我想知道为什么不是这样。
其他方法都在Object.prototype上,为什么不是这样呢?
发布于 2013-11-13 06:48:51
因为您可以通过使用一个名为keys的键来定义对象来轻松覆盖它,该键包含一个值或函数。
var myObj = {
val1: 'hi',
keys: function() {
return true;
}
};您希望myObj.keys()返回什么?
发布于 2013-11-13 06:59:41
我假设他们这样做是因为并不总是清楚什么是键,什么不是键,例如:
var cls = function() {
this.IAMAKEY = undefined;
this.someMethod = function() {};
};
Object.keys(new cls()); // ['IAMAKEY', 'someMethod']顺便说一句,添加Object.prototype.keys会返回键方法:)
但如果你一定要这样做:
Object.defineProperty(Object.prototype, 'keys', {
writable: false,
configurable: false,
value: function() {
return Object.keys(this);
}
});https://stackoverflow.com/questions/19941499
复制相似问题