J'essaie de comprendre la différence entre Object et Object.prototype. Car pour créer un objet vide, Object.prototype est utilisé. Je me sentais pourquoi pas Objet.javascript qu'est-ce que Object vs Object.prototype lorsqu'il est utilisé dans le paramètre proto de Object.create
Je crée un objet de la manière suivante.
Méthode 1:
o = Object.create(Object.prototype,{ p : {value: "test"} });
console.log(o.__proto__);
résultat
est:
Object {__defineGetter__: function, __defineSetter__: function, hasOwnProperty: function, __lookupGetter__: function, __lookupSetter__: function…}
et
console.log(o)
résultat
est
Object {p: "test"}
p : "test"
__proto__ : Object
constructor : function Object()
hasOwnProperty : function hasOwnProperty()
isPrototypeOf : function isPrototypeOf()
propertyIsEnumerable : function propertyIsEnumerable()
toLocaleString : function toLocaleString()
toString : function toString()
valueOf : function valueOf()
__defineGetter__ : function __defineGetter__()
__defineSetter__ : function __defineSetter__()
__lookupGetter__ : function __lookupGetter__()
__lookupSetter__ : function __lookupSetter__()
get __proto__ : function __proto__()
set __proto__ : function __proto__()
vs
o = Object.create(Object,{ p : {value: "test"} });
console.log(o.__proto__);
résultat est:
function Object() { [native code] }
et:
console.log(o)
résultat est:
Function {p: "test"}
p : "test"
__proto__ : function Object()
arguments : null
assign : function assign()
caller : null
create : function create()
defineProperties : function defineProperties()
defineProperty : function defineProperty()
entries : function entries()
freeze : function freeze()
getOwnPropertyDescriptor : function getOwnPropertyDescriptor()
getOwnPropertyDescriptors : function getOwnPropertyDescriptors()
getOwnPropertyNames : function getOwnPropertyNames()
getOwnPropertySymbols : function getOwnPropertySymbols()
getPrototypeOf : function getPrototypeOf()
is : function is()
isExtensible : function isExtensible()
isFrozen : function isFrozen()
isSealed : function isSealed()
keys : function keys()
length : 1
name : "Object"
preventExtensions : function preventExtensions()
prototype : Object
seal : function seal()
setPrototypeOf : function setPrototypeOf()
values : function values()
__proto__ : function()
[[FunctionLocation]] : <unknown>
Dans ce général je trouve:
o = {};
// is equivalent to:
o = Object.create(Object.prototype);
pourquoi ne pas
o = {};
// is equivalent to:
o = Object.create(Object);
Parce que 'nouveau Object' équivaut à' Object.create (Object.prototype) '. Voilà comment cela fonctionne: la fonction constructeur qui initialise une instance n'est pas la même chose que l'objet dont les instances héritent. – Bergi