Dalam JavaScript, terdapat lapan jenis primitif: Undefined, Null, Boolean, Number, BigInt, String, Symbol, dan Objek jenis bukan primitif. Nilai primitif, seperti rentetan, tidak boleh mempunyai sifat. Objek, sebaliknya, boleh.
Percubaan untuk menambah sifat pada nilai primitif, seperti rentetan, akan menyebabkan tiada operasi dalam mod longgar atau TypeError dalam mod ketat. Ini kerana JavaScript mentafsir tugasan tersebut sebagai percubaan untuk menetapkan nilai pembolehubah, bukan mencipta sifat baharu.
<code class="js">var test = "test"; test.test = "test inner"; console.log(test); // "test" console.log(test.test); // undefined</code>
Walaupun anda tidak boleh menambah sifat pada rentetan , terdapat penyelesaian untuk memudahkan pengisihan tarikh dalam grid anda:
Sifat Aksesor ES5 memperkenalkan, yang membolehkan anda mentakrifkan fungsi pengambil dan penetap untuk sifat. Anda boleh mentakrifkan sifat pengakses pada prototaip String yang mengembalikan objek tarikh:
<code class="js">Object.defineProperty(String.prototype, 'date', { get: function () { return new Date(this); } }); var dateString = "2023-05-18"; var dateObject = dateString.date; console.log(dateObject); // Date { 2023, 4, 18 ... }</code>
Walau bagaimanapun, mengubah suai prototaip String terbina dalam dianggap sebagai amalan yang lemah.
Sebagai alternatif, anda boleh mentakrifkan fungsi pengisihan tersuai yang mengecam rentetan tarikh dan membandingkannya dengan sewajarnya:
<code class="js">function compareDates(a, b) { var dateA = new Date(a); var dateB = new Date(b); return dateA - dateB; } var gridData = ["2023-05-18", "2022-12-15", "2021-08-23"]; gridData.sort(compareDates); console.log(gridData); // ["2021-08-23", "2022-12-15", "2023-05-18"]</code>
Anda boleh melanjutkan pembina Tarikh JavaScript dengan fungsi pemformatan tersuai yang mengembalikan perwakilan rentetan mesra diisih:
<code class="js">Date.prototype.toSortedString = function () { return this.getFullYear() + "-" + (this.getMonth() + 1) + "-" + this.getDate(); }; var sortedByDate = dates.map(function (date) { return new Date(date).toSortedString(); }); sortedByDate.sort(); console.log(sortedByDate); // ["2021-08-23", "2022-12-15", "2023-05-18"]</code>
Atas ialah kandungan terperinci Mengapakah rentetan JavaScript tidak boleh mempunyai sifat dan bagaimana anda boleh mengatasi had ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!