Maison > Questions et réponses > le corps du texte
mdn est la suivante
La traduction dit que cela n'affecte pas les attributs hérités du prototype, mais la valeur de l'attribut __proto__ ne peut pas être modifiée. Ensuite, je l'ai testé moi-même et j'ai découvert que le prototype pouvait être supprimé et modifié après avoir scellé l'objet, puis je l'ai testé. Je n'ai pas compris l'expression de cette phrase. Est-elle exacte ? . .
Le code est le suivant
let obj_origin, obj_changed;
function Person() {
this.name = 'sheng';
this.age = '25';
}
Person.prototype = {
constructor: Person,
sing () {
alert('sing');
},
prototypeTarget:'prototypeTarget'
};
obj_origin = new Person();
obj_changed = Object.seal(obj_origin);
delete obj_changed.name;
delete obj_changed.__proto__.prototypeTarget;
console.log(obj_changed);
L'attribut prototypeTarget sur le prototype a été supprimé
怪我咯2017-06-10 09:51:20
Normalement, un objet est extensible (de nouvelles propriétés peuvent être ajoutées). Le scellement d'un objet rend impossible l'ajout de nouvelles propriétés et toutes les propriétés existantes deviennent non configurables. L'effet d'une propriété non configurable est qu'elle devient non supprimable et qu'une propriété de données ne peut pas être redéfinie en tant que propriété d'accesseur, ou vice versa. Mais la valeur du bien peut encore être modifiée. Toute tentative de suppression d'une propriété d'un objet scellé ou de conversion d'une propriété d'un objet scellé d'une propriété de données en propriété d'accesseur échouera silencieusement ou lèvera une exception TypeError (mode strict).
N'affecte pas les propriétés héritées de la chaîne de prototypes. Mais la valeur de l'attribut proto ne peut pas être modifiée.
Les informations proviennent de : https://developer.mozilla.org...
巴扎黑2017-06-10 09:51:20
_proto_ est une propriété privée interne, pas une propriété prototype
Pour plus de détails, veuillez lire https://developer.mozilla.org...