Rumah  >  Artikel  >  hujung hadapan web  >  Menguasai Objek JavaScript: Perbandingan, Manipulasi dan Teknik Kawalan

Menguasai Objek JavaScript: Perbandingan, Manipulasi dan Teknik Kawalan

Linda Hamilton
Linda Hamiltonasal
2024-11-12 01:32:03464semak imbas

Mastering JavaScript Objects: Comparison, Manipulation, and Control Techniques

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.


1. Perbandingan Objek

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.


2. Deskriptor Objek

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

3. Mengekstrak Kunci, Nilai dan Entri

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

4. Penggabungan dan Pengklonan Objek

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 }

5. Object.create()

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"

6. Object.is()

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

7. Object.getOwnPropertyDescriptors()

Mendapatkan deskriptor semua sifat. Berguna untuk salinan dalam dengan deskriptor bukan lalai:

const obj = { name: "Alice" };
console.log(Object.getOwnPropertyDescriptors(obj));

8. Object.getOwnPropertyNames()

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"]

9. Object.seal()

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" }

10. Object.freeze()

Membekukan objek, menghalang sebarang pengubahsuaian.

const obj = { name: "Alice" };
Object.freeze(obj);
obj.name = "Bob"; // Fails
console.log(obj); // { name: "Alice" }

11. Object.assign()

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

Kesimpulan

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!

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