values keys array and javascript object key prototype javascript-objects

javascript - array - ¿Por qué Object.keys no es Object.prototype.keys?



object keys and values javascript (2)

Me pregunto por qué la especificación ha definido Object.keys lugar de Object.prototype.keys ? seguramente sería mucho mejor si la API fuera consistente, y me gustaría entender por qué ese no es el caso.

Otros métodos están en Object.prototype , entonces ¿por qué este no es el caso?


Debido a que podría anularlo fácilmente al definir su objeto con una tecla llamada keys contienen un valor o una función.

var myObj = { val1:"hi", keys:function(){ return true; } };

¿Qué esperas que sea devuelto por myObj.keys() ?


Supongo que hicieron esto porque no siempre está claro qué son las claves y cuáles no, por ejemplo:

var cls = function() { this.IAMAKEY = undefined; this.someMethod = function() {}; }; Object.keys(new cls()); // [''IAMAKEY'', ''someMethod'']

Incidentalmente, al agregar Object.prototype.keys, se devuelve el método de las teclas :)

Pero si usted debe:

Object.defineProperty(Object.prototype, ''keys'', { writable: false, configurable: false, value: function() { return Object.keys(this); } });