Rumah > Artikel > hujung hadapan web > Membina kod contoh ArrayList dalam petua JavaScript_javascript
Kami memperkenalkan API Tatasusunan JavaScript sebelum ini, tatasusunan itu sendiri sangat berkuasa Ia boleh menyimpan sebarang jenis, dan panjangnya diperluaskan secara automatik.
Ia hanya mengalahkan tatasusunan Java (panjang tetap, jenis tunggal). Kelas koleksi di Java adalah untuk mengimbangi kekurangan tatasusunan Kebanyakan lapisan bawahnya menggunakan storan Object [], yang hanya menyediakan strategi pengembangan dinamik Sudah tentu, kekayaan API JDK sukar untuk bahasa lain perlawanan.
Tetapi ia tidak menghalang kecintaan saya terhadap Java dan JavaScript.
Jawa adalah seperti wanita pertengahan umur Anda sentiasa dapat melihat pesonanya dalam JDK Apabila membina sistem pengedaran yang besar, ajarannya yang ikhlas dapat dicerminkan
Dan JavaScript adalah seperti seorang gadis yang baru berbunga, ia akan membangkitkan riak dalam hati anda. Ia mesti dilatih dengan teliti sebelum boleh digunakan oleh anda.Baiklah, maafkan saya atas metafora yang tidak sesuai, mari bercakap mengenainya.
/** *@class ArrayList *@description *@time 2014-09-16 21:59 *@author StarZou **/ function ArrayList(arr) { this._elementData = arr || []; } var arrayListPrototype = { '_arrayPrototype': Array.prototype, '_getData': function () { return this._elementData; }, 'size': function () { return this._getData().length; }, 'isEmpty': function () { return this.size() === 0; }, 'contains': function (obj) { return this.indexOf(obj) > -1; }, 'indexOf': function (obj) { var i , data = this._getData(), length = data.length; for (i = 0; i < length; i++) { if (obj === data[i]) { return i; } } return -1; }, 'lastIndexOf': function (obj) { var i , data = this._getData(), length = data.length; for (i = length - 1; i > -1; i--) { if (obj === data[i]) { return i; } } return -1; }, 'get': function (index) { return this._getData()[index]; }, 'set': function (index, element) { this._getData()[index] = element; }, 'add': function (index, element) { if (element) { this.set(index, element); } else { return this._getData().push(index); } }, 'remove': function (index) { var oldValue = this._getData()[index]; this._getData()[index] = null; return oldValue; }, 'clear': function () { this._getData().length = 0; }, 'addAll': function (index, array) { if (array) { this._getData().splice(index, 0, array); } else { this._arrayPrototype.push.apply(this._getData(), index); } } }; ArrayList.prototype = arrayListPrototype;
// Test 代码 var arr = new ArrayList([3, 6, 5, 'xyz', 'foo', 'xyz']); console.log(arr.contains('xyz')); console.log(arr.indexOf('xyz')); console.log(arr.lastIndexOf('xyz')); console.log(arr.get(2)); arr.addAll([1, 2, 3]); console.log(arr);
Kod di atas melaksanakan sebahagian daripadanya, dan masih terdapat kawasan pengoptimuman,
Pada masa hadapan, saya akan mempunyai masa untuk menulis JavaScript untuk mensimulasikan kelas yang melaksanakan Struktur Pokok, Tindanan, Baris Gilir, Peta dan lain-lain.