2012-07-01 9 views
7

Al parecer, el uso de la propiedad __proto__ sigue siendo la principal forma de manipulación de cadenas de prototipos, aunque esto no cumple con los estándares y IE no lo admite. Aunque también puede construir herencia mediante el uso del constructor new, esto parece una complicación innecesaria en comparación con la propiedad __proto__ o la función Object.getPrototypeOf que cumple con los estándares.¿Por qué no hay Object.setPrototypeOf (...) en el estándar ECMAScript?

Editar:

Como se indica en las respuestas, este método existe ahora (estándar ES6). Sé consciente de la advertencia de rendimiento, sin embargo: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf

+5

buenas noticias. parece que Object.setPrototypeOf() entró en ES6 http://webreflection.blogspot.pt/2013/05/objectsetprototypeofo-proto-is-in-es6.html – banzomaikaka

Respuesta

2

Brendan Eich dice este here:

Object.setPrototypeOf no va a suceder. Escribir __proto__ es un dolor gigante para implementar (debe serializar para verificar el ciclo) y crea todo tipo de riesgos de confusión de tipo. Puede pensar que lo quiere como un instrumento agudo de bajo nivel . JS no es ese lenguaje. Los formularios de nivel superior para clases y mixins parecen mucho mejores y no incluyen dichos bordes nítidos .

+0

Gracias por la respuesta, aunque tengo que admitir que no Comprende completamente. ¿Tu idea es agregar herencia basada en no prototipo en Javascript? En mi opinión Object.setPrototypeOf simplemente crearía una referencia de objeto prototipo, por lo que no entiendo cómo esto requeriría la serialización. – JussiR

+6

parece que estaba equivocado :) Acabo de en Chrome: https://code.google.com/p/v8/source/detail?r=18685 y, es experimental en Firefox ya: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf – lucasarruda

+0

@Esailija ¿cuál es su opinión sobre esto en 2017? Pareces ponerte "serio" cuando se trata de rendimiento y optimización (en libs escribes/contribuyes) así que me gustaría saber qué piensas. –

Cuestiones relacionadas