¿Hay una diferencia entre Object.getPrototypeOf(obj)
y obj.constructor.prototype
? ¿O están estos dos haciendo referencia a lo mismo?es Object.getPrototypeOf() igual que Object.constructor.prototype en Javascript?
9
A
Respuesta
9
NO
Devuelve el [[Prototype]]
interna valor.
Por ejemplo:
var o = Object.create(null);
Object.getPrototypeOf(o); // null
o.constructor.prototype; // error
var p = {};
var o = Object.create(p);
Object.getPrototypeOf(o); // p
o.constructor.prototype; // Object.prototype
o.constructor.prototype
sólo funciona con objetos creados a través new ConstructorFunction
o donde se ha configurado manualmente la relación Prototype.prototype.constructor === Prototype
.
2
No. En particular, la propiedad constructor
de un objeto no siempre se establece en lo que se consideraría "correcto".
un ejemplo de dónde getPrototypeOf
obras, sino .constructor.prototype
no:
function F() { }
F.prototype = {
foo: "bar"
};
var obj = new F();
assert.equal(obj.constructor.prototype, Object.prototype);
assert.equal(Object.getPrototypeOf(obj), F.prototype);
También falla de escenarios típicos herencia de prototipos:
// G prototypally inherits from F
function G() { }
G.prototype = Object.create(F.prototype);
// or: G.prototype = new F();
var obj2 = new G();
assert.equal(obj2.constructor.prototype, Object.prototype);
assert.equal(Object.getPrototypeOf(obj2), G.prototype);
assert.equal(Object.getPrototypeOf(Object.getPrototypeOf(obj2)), F.prototype);
Cuestiones relacionadas
- 1. JavaScript es = igual que ==
- 2. Java es igual para una clase. Es == igual que .equals
- 3. JavaScript Fecha Comparaciones No es igual
- 4. php no es igual a no es igual, igual a
- 5. ¿Cómo distinguir las teclas más/igual e igual en javascript?
- 6. El punto de PHP es igual al operador `. =` En Javascript?
- 7. Comportamiento de JavaScript misterioso: desigual es igual a
- 8. es si() {} {hacerlo, mientras que();} exactamente igual, mientras que {}
- 9. ¿NaN es igual a NaN?
- 10. ¿Es MSIL igual que el código administrado en .NET?
- 11. ¿cómo se dice que no es igual a en ruby?
- 12. No es igual a este O que en Lua
- 13. Photoshop maqueta Fuente no es igual que en HTML
- 14. No es igual en SQL
- 15. doble es igual a igual y triple en php
- 16. No es igual condicional
- 17. Rieles validación de que un valor no es igual a
- 18. Es LINQ generalmente más lento que una instrucción SQL igual
- 19. Es un parámetro int * exactamente igual que un parámetro int []
- 20. Cómo validar que una refactorización es igual al código original
- 21. ArrayList que no utiliza el reemplazado es igual a
- 22. Dos tipos no es igual que debe ser
- 23. ¿La combinación interna es igual que la combinación equi?
- 24. Scala: ¿== default es igual a?
- 25. Usando LINQ no es igual
- 26. Java: Entero es igual a ==
- 27. es igual a devolver false
- 28. ¿CHECKPOINT funciona igual que COMMIT en TSQL?
- 29. document.getElementById (''). Src == ??? (Es igual a FAIL)
- 30. es igual a vs Arrays.equals en Java
Puedes enviar preguntas y respuestas útiles y también aceptar respuestas que resuelvan tus propias preguntas. Esto ayuda a organizar SO y también es una pequeña recompensa para aquellos que lo ayudaron. – hugomg
@missingno Sus preguntas hasta ahora son bastante interesantes ... –
@ ŠimeVidas: Aún merece el comentario repetitivo "0%": P – hugomg