Dalam JavaScript, terdapat pelbagai cara untuk mengakses sifat objek. Walau bagaimanapun, mengakses sifat bersarang dengan laluan rentetan boleh menjadi satu cabaran.
Memandangkan objek seperti:
var r = { a:1, b: { b1:11, b2: 99}};
Pertimbangkan senario di mana anda ingin mengakses nilai 99 dengan menentukan rentetan laluan var s = "b.b2". Walaupun kaedah tradisional seperti r.b.b2 atau r['b']['b2'] berfungsi, anda mungkin lebih suka menggunakan tatatanda yang lebih ringkas.
function getDescendantProp(obj, desc) { var arr = desc.split("."); while(arr.length && (obj = obj[arr.shift()])); return obj; }
Fungsi ini secara berulang membelah rentetan pada titik dan menavigasi struktur objek, akhirnya mengembalikan sifat yang diminta.
console.log(getDescendantProp(r, "b.b2")); //-> 99
Fungsi yang disediakan hanya menyokong mengakses sifat objek bersarang. Untuk penggunaan yang lebih maju, anda boleh mengubah suainya untuk mengendalikan indeks tatasusunan juga:
function advancedGetDescendantProp(obj, desc) { var arr = desc.split("."); while(arr.length) { let key = arr.shift(); if (isNaN(key)) { obj = obj[key]; } else { obj = obj[parseInt(key)]; } if (!obj) return undefined; } return obj; }
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan Notasi Titik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!