Dalam JavaScript, sifat objek dibahagikan kepada dua jenis: sifat data dan sifat memori:
Perbezaan antara dua sifat
Kami menggunakan Object.defineProperty() untuk mula-mula merasakan perbezaan antara keduanya secara intuitif.
Kaedah menetapkan sifat data menggunakan Object.defineProperty() adalah seperti berikut
var obj = {}; Object.defineProperty(obj, "prop", { value: 1, writable: true, //可写性 enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
Kaedah menetapkan sifat memori menggunakan Object.defineProperty() adalah seperti berikut
var obj = {}; Object.defineProperty(obj, "prop", { get set enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
Daripada contoh di atas, kami mendapati bahawa atribut memori tidak mempunyai dua nilai atribut dan boleh ditulis, tetapi digantikan dengan set dan dapatkan atribut.
Sifat Memori
Setelah melihat perbezaan intuitif antara atribut data dan atribut memori, mari kita lihat secara terperinci pada atribut memori, atribut yang mudah diabaikan (ini saya TT).
Perbezaan terbesar antara atribut memori dan atribut data ialah penambahan getter/setters, yang melaluinya nilai atribut boleh dikendalikan dan beberapa fungsi praktikal boleh dilaksanakan.
//example1 function serialnum() { var n =1; var prop = null; Object.defineProperty(this, "n", { get: function() { return n; }, set: function(value) { if(value > n) n = value; else throw '请输入一个大于n的值'; } }) } var obj = new serialnum(); obj.n = 2; //2 obj.n = 0; //Uncaught 请输入一个大于n的值
Dalam contoh di atas, fungsi set digunakan untuk mengawal julat nilai n.
Editor akan memperkenalkan anda kepada atribut storan atribut data js di sini, saya harap ia akan membantu anda!