Object.create(null) 和 {} 区别是什么 看vuex源码定于对象都是Object.create(null) 为何不直接使用 {}
Object.create(null)
{}
vuex
Object.create(null) n'hérite d'aucune méthode de prototype, ce qui signifie que sa chaîne de prototypes n'a pas de niveau supérieur.
console.log(Object.create({}).toString); // function toString() { [native code] } console.log(Object.create(null).toString); // undefined
Object.create() Cette méthode est utilisée pour l'héritage, je me souviens qu'elle devrait être appelée héritage fonctionnel. En js, null n'a aucun attribut ni méthode. Vous avez hérité d'un null, il n'y a donc rien dedans.
La méthode
Object.create() crée un nouvel objet en utilisant l'objet prototype spécifié et ses propriétés.
Object.create()
var c=Object.create(null), b= {}, a=Object.create(Object.prototype); console.log(c, b, a);
Object.create(proto, [ propertiesObject ]) proto 一个对象,应该是新创建的对象的原型。 propertiesObject 可选。该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符(这些属性描述符的结构与Object.defineProperties()的第二个参数一样)。注意:该参数对象不能是 undefined,另外只有该对象中自身拥有的可枚举的属性才有效,也就是说该对象的原型链上属性是无效的。 抛出异常 如果 proto 参数不是 null 或一个对象值,则抛出一个 TypeError 异常。
Explication détaillée
Object.create(null)
n'hérite d'aucune méthode de prototype, ce qui signifie que sa chaîne de prototypes n'a pas de niveau supérieur.Object.create() Cette méthode est utilisée pour l'héritage, je me souviens qu'elle devrait être appelée héritage fonctionnel.
En js, null n'a aucun attribut ni méthode.
Vous avez hérité d'un null, il n'y a donc rien dedans.
La méthode
Object.create()
crée un nouvel objet en utilisant l'objet prototype spécifié et ses propriétés.Explication détaillée