Après avoir scellé l'objet avec Object.seal() dans es5, les propriétés du prototype d'objet peuvent-elles être modifiées ?
漂亮男人
漂亮男人 2017-06-10 09:49:20
0
2
949
L'explication de

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é

漂亮男人
漂亮男人

répondre à tous(2)
刘奇

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...

巴扎黑

_proto_ est une propriété privée interne, pas une propriété prototype

Pour plus de détails, veuillez lire https://developer.mozilla.org...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal