Rumah >hujung hadapan web >tutorial js >Atribut data dan atribut ingatan bagi kemahiran JavaScript note_javascript

Atribut data dan atribut ingatan bagi kemahiran JavaScript note_javascript

WBOY
WBOYasal
2016-05-16 15:07:081493semak imbas

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn