cari

Rumah  >  Soal Jawab  >  teks badan

Selepas mengelak objek dengan Object.seal() dalam es5, bolehkah sifat pada prototaip objek diubah suai?

Penjelasan

mdn begini

Terjemahan mengatakan bahawa ia tidak menjejaskan atribut yang diwarisi daripada prototaip, tetapi nilai atribut __proto__ tidak boleh diubah suai Kemudian saya mengujinya sendiri dan mendapati bahawa prototaip boleh dipadam dan diubah suai selepas mengelak objek, dan kemudian saya. tidak memahami ungkapan ayat ini. . .
Kod adalah seperti berikut

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);


Atribut prototaipTarget pada prototaip telah dipadamkan

漂亮男人漂亮男人2781 hari yang lalu952

membalas semua(2)saya akan balas

  • 怪我咯

    怪我咯2017-06-10 09:51:20

    Biasanya, objek boleh dipanjangkan (sifat baharu boleh ditambah). Mengelak objek menjadikannya mustahil untuk menambah sifat baharu dan semua sifat sedia ada menjadi tidak boleh dikonfigurasikan. Kesan sifat tidak boleh dikonfigurasikan ialah sifat itu menjadi tidak boleh dipadam dan sifat data tidak boleh ditakrifkan semula sebagai sifat penyambung, atau sebaliknya. Tetapi nilai hartanah masih boleh diubah suai. Percubaan untuk memadamkan sifat objek yang dimeterai atau menukar sifat objek yang dimeterai daripada sifat data kepada sifat pengakses akan gagal secara senyap atau membuang pengecualian TypeError (mod ketat).

    Tidak menjejaskan sifat yang diwarisi daripada rantai prototaip. Tetapi nilai atribut proto tidak boleh diubah suai.

    Maklumat datang daripada: https://developer.mozilla.org...

    balas
    0
  • 巴扎黑

    巴扎黑2017-06-10 09:51:20

    _proto_ ialah harta persendirian dalaman, bukan harta prototaip

    Untuk butiran, sila baca https://developer.mozilla.org...

    balas
    0
  • Batalbalas