Rumah > Artikel > hujung hadapan web > Menguasai Objek JavaScript: Perbandingan, Manipulasi dan Teknik Kawalan
Objek JavaScript sangat berkuasa dan serba boleh. Ia membolehkan kami menyimpan data yang kompleks dan dilengkapi dengan pelbagai kaedah terbina dalam untuk memudahkan manipulasi data. Mari lihat beberapa kaedah objek yang paling berguna dan cara ia membandingkan antara satu sama lain.
Membandingkan objek secara langsung dengan === tidak akan berfungsi kerana JavaScript membandingkan dengan rujukan, bukan mengikut nilai. Contohnya:
const obj1 = { a: 1 }; const obj2 = { a: 1 }; console.log(obj1 === obj2); // false
Untuk membandingkan kandungan, gunakan fungsi perbandingan mendalam atau perpustakaan seperti Lodash.
Penerangan sifat menyediakan metadata tentang sifat objek. Contohnya:
nilai: Nilai hartanah
boleh ditulis: Bolehkah nilai ditukar?
terhitung: Adakah ia boleh dilihat dalam gelung?
boleh dikonfigurasikan: Bolehkah ia diubah suai?
const obj = { name: "Alice" }; const descriptor = Object.getOwnPropertyDescriptor(obj, "name"); console.log(descriptor);
Object.keys(): Mengembalikan tatasusunan kunci objek.
Object.values(): Mengembalikan tatasusunan nilai.
Object.entry(): Mengembalikan tatasusunan pasangan nilai kunci.
const person = { name: "Alice", age: 25 }; console.log(Object.keys(person)); // ["name", "age"] console.log(Object.values(person)); // ["Alice", 25] console.log(Object.entries(person)); // [["name", "Alice"], ["age", 25]]
Object.assign() menyalin sifat dari satu objek ke objek yang lain. Ia hanya melakukan salinan cetek, jadi ia tidak akan mengklon objek bersarang secara mendalam.
const target = { a: 1 }; const source = { b: 2 }; Object.assign(target, source); console.log(target); // { a: 1, b: 2 }
Kaedah ini mencipta objek baharu menggunakan prototaip yang ditentukan. Berguna untuk warisan:
const personPrototype = { greet() { return `Hello, ${this.name}`; } }; const person = Object.create(personPrototype); person.name = "Alice"; console.log(person.greet()); // "Hello, Alice"
Kaedah ini menyemak sama ada dua nilai adalah sama, malah membezakan antara 0 dan -0 atau membandingkan NaN dengan betul.
console.log(Object.is(+0, -0)); // false console.log(Object.is(NaN, NaN)); // true
Mendapatkan deskriptor semua sifat. Berguna untuk salinan dalam dengan deskriptor bukan lalai:
const obj = { name: "Alice" }; console.log(Object.getOwnPropertyDescriptors(obj));
Mengembalikan semua nama harta, termasuk nama yang tidak terhitung.
const obj = { a: 1 }; Object.defineProperty(obj, "b", { value: 2, enumerable: false }); console.log(Object.getOwnPropertyNames(obj)); // ["a", "b"]
Memeterai objek, membenarkan perubahan pada sifat sedia ada tetapi tiada penambahan atau pemadaman.
const obj = { name: "Alice" }; Object.seal(obj); obj.age = 30; // Fails console.log(obj); // { name: "Alice" }
Membekukan objek, menghalang sebarang pengubahsuaian.
const obj = { name: "Alice" }; Object.freeze(obj); obj.name = "Bob"; // Fails console.log(obj); // { name: "Alice" }
Ini digunakan untuk menyalin sifat daripada berbilang objek sumber kepada objek sasaran.
const obj1 = { a: 1 }; const obj2 = { a: 1 }; console.log(obj1 === obj2); // false
JavaScript menyediakan senjata kaedah untuk bekerja dengan objek, setiap satu mempunyai tujuan tertentu. Dengan memahami cara dan masa untuk menggunakan kaedah ini, anda boleh mengawal gelagat objek, mengubah suai sifatnya atau menguncinya daripada perubahan.
Atas ialah kandungan terperinci Menguasai Objek JavaScript: Perbandingan, Manipulasi dan Teknik Kawalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!