Rumah  >  Artikel  >  hujung hadapan web  >  Pengaturcaraan lanjutan JavaScript objek dan tatasusunan yang mendalam (kaedah tindanan, kaedah baris gilir, kaedah penyusunan semula, kaedah lelaran)_kemahiran javascript

Pengaturcaraan lanjutan JavaScript objek dan tatasusunan yang mendalam (kaedah tindanan, kaedah baris gilir, kaedah penyusunan semula, kaedah lelaran)_kemahiran javascript

WBOY
WBOYasal
2016-05-16 15:28:311163semak imbas

Warisan ialah salah satu konsep yang paling banyak diperkatakan dalam bahasa OO. Banyak bahasa OO menyokong dua jenis pewarisan: pewarisan antara muka dan pewarisan pelaksanaan. Warisan antara muka hanya mewarisi tandatangan kaedah, manakala warisan pelaksanaan mewarisi kaedah sebenar. Seperti yang dinyatakan, pewarisan antara muka tidak boleh dilakukan dalam ECMAScript kerana fungsi tidak mempunyai tandatangan. ECMAScript hanya menyokong warisan pelaksanaan, dan warisan pelaksanaannya bergantung terutamanya pada rantaian prototaip.

1. Gunakan literal objek untuk mentakrifkan objek

var person={};

Apabila mencipta objek dengan cara ini, pembina Objek sebenarnya tidak dipanggil.

Pembangun lebih suka sintaks literal objek.

2. Kadangkala apabila sejumlah besar parameter pilihan perlu diluluskan, secara amnya, literal objek digunakan untuk merangkum berbilang parameter pilihan.

3. Perbezaan antara tatatanda titik dan tanda kurungan segiempat bagi atribut objek

(1) Secara fungsional: tiada perbezaan antara keduanya

(2) Tetapi kelebihan kurungan segi empat sama ialah atribut boleh diakses melalui pembolehubah

Contohnya:

  var person={
  name:"Nic"
}

Notasi titik: nama orang

Notasi kurungan segi empat sama: var prop="name";
orang[prop]

(3) Kelebihan lain ialah:

Jika nama atribut mengandungi aksara atau kata kunci yang akan menyebabkan ralat tatabahasa atau perkataan terpelihara, tidak salah untuk menggunakan kurungan segi empat sama

Contohnya: orang["nama pertama"]="OK";

(4) Secara amnya, adalah disyorkan untuk menggunakan notasi titik

4. Masalah dengan mencipta tatasusunan

warna var=[1,2,] //Jangan lakukan ini. Ini akan mencipta tatasusunan dengan 2 atau 3 item
var opy=[,,,,,] //Jangan lakukan ini. Ini akan membuat tatasusunan 5 atau 6 item

Ini kerana IE8 dan versi sebelumnya mempunyai pepijat dalam pelaksanaan literal tatasusunan

Apabila mencipta tatasusunan menggunakan literal, pembina Tatasusunan tidak akan dipanggil

5 Jika indeks penetapan nilai tertentu melebihi bilangan item sedia ada dalam tatasusunan.

Contohnya: var color=[1,2,3]

warna[3], tatasusunan akan meningkat secara automatik kepada panjang nilai indeks tambah 1

Pada masa ini, nilai warna[3] tidak ditentukan

6 Panjang tatasusunan bukan sekadar baca sahaja. Dengan menetapkan sifat panjang, anda boleh terus menambah item baharu pada penghujung tatasusunan.

7. Tukar tatasusunan kepada rentetan keString() join()

array.toString()  //返回以逗号分隔的字符串
array.valueOf()  //返回的还是数组
array.join(",")  //也可以

8. Kaedah tindanan tatasusunan push() pop()

Timbunan ialah struktur data, iaitu item yang ditambah terkini adalah yang paling awal dialih keluar (masuk terakhir, keluar dahulu). Sisipan dan pengalihan item daripada tindanan hanya berlaku di satu lokasi - bahagian atas tindanan.
ECMAScript menyediakan kaedah push() dan pop() untuk melaksanakan tindanan jenis ini.

Kaedah

push() menambah satu atau lebih elemen pada penghujung tatasusunan dan mengembalikan panjang baharu.

Kaedah pop() digunakan untuk mengalih keluar dan mengembalikan elemen terakhir tatasusunan.

Contoh:

var arr=[];
var count=arr.push('a','b');  //count=2
arr.push('c');
var item=arr.pop();  //移除最后一项 c item=c 并且改变数组长度

9. Anjakan kaedah gilir() nyahshift()

Peraturan akses untuk data baris gilir ialah masuk dahulu, keluar dahulu
ECMAScript menyediakan shift() untuk melaksanakan ini.
Kaedah shift() digunakan untuk mengalih keluar elemen pertama daripada tatasusunan dan mengembalikan nilai elemen pertama.
Kaedah unshift() menambah satu atau lebih elemen pada permulaan tatasusunan dan mengembalikan panjang baharu.

10. Kaedah penyusunan semula sort() reverse()

ECMAScript menyediakan sort() dan reverse() untuk pelaksanaan.

sort() akan memanggil kaedah tostring() setiap item tatasusunan dan membandingkan rentetan yang terhasil untuk mengisih.

11. Susunan gabungan concat()

kaedah concat() digunakan untuk menggabungkan dua atau lebih tatasusunan.

Kaedah ini tidak mengubah tatasusunan sedia ada, tetapi hanya mengembalikan salinan tatasusunan yang disambungkan.

12 Kaedah slice() mengembalikan elemen yang dipilih daripada tatasusunan sedia ada.

13 Kaedah Kedudukan: indexOf() dan lastIndexOf()

14. Kaedah lelaran

ECMAScript5 mentakrifkan lima kaedah berikut, yang kesemuanya menerima tiga parameter: nilai item tatasusunan, kedudukan item dalam tatasusunan dan pasangan tatasusunan itu sendiri      

every(),filter(),forEach(),map(),some()

Contoh:

var num=[1,2,3,4];
var res=num.every(function(item,index,array){
  return (item>2)
})  //false  必须每一项都大于2,才返回true
var res=num.some(function(item,index,array){
  return (item>2)
})  //true 只要有一个大于2,就返回true
var res=num.filter(function(item,index,array){
  return (item>2)
})  //[3,4]   
var res=num.forEach(function(item,index,array){
  return (item>2)
})  //[1,4,9,16]  

Kaedah lelaran dalam objek tatasusunan javascript

/* javascript 数组对象中的迭代方法 
 * ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数,第一个是进行迭代的函数,第二个是该函数的作用域对象【可选】。 


 * 进行迭代的函数接受三个参数,第一个是数组中要进行迭代的元素的值,第二个是数组候总要进行迭代的元素的位置,第三个是迭代数组本身。 


* 1. every()  对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true 
 * 2. filter() 对数组中的每一项运行给定的函数,返回该函数返回true的项组成的数组。 
 * 3. forEach() 对数组中的每一项运行给定的函数,这个方法没有返回值 
 * 4. map()   对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组 
 * 5. some()  对数组中的每一项运行给定的函数,如果该函数对任意一项返回true,则返回true 
 * 
 * 这些迭代方法支持的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome 
 */ 
var num = [1,2,3,4,5,6,7,8,9]; 
var everyResult = num.every(function(item, index, array) { 
  if(item > 2) { 
    return true; 
  } 
}); 
alert(everyResult); 
var someResult = num.some(function(item) { 
  if(item > 2) { 
    return true; 
  } 
}); 
alert(someResult); 
var filterResult = num.filter(function(item) { 
  if(item > 2) { 
    return true; 
  } 
}); 
alert(filterResult); 
var mapResult = num.map(function(item) { 
  if(item > 2) { 
    return true; 
  } 
}); 
alert(mapResult); 
var forEachResult = num.forEach(function(item) { 
  if(item > 2) { 
    return true; 
  } 
}); 
alert(forEachResult); 
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