Jenis rujukan sangat penting dalam JavaScript. Jenis rujukan ialah struktur data yang digunakan untuk menyusun data dan fungsi bersama-sama. Ia menerangkan sifat dan kaedah sesuatu jenis objek. Objek ialah jenis asas, Array ialah jenis tatasusunan, Tarikh ialah jenis tarikh, RegExp ialah jenis ungkapan biasa, dsb.
Peluk JavaScript
JavaScript yang dahulunya tidak diketahui telah meningkat dua kali ganda nilainya dengan populariti AJAX Kini JavaScript bukan lagi sekadar alat bantu yang boleh diketepikan dalam pembangunan WEB malah terdapat kedudukan yang didedikasikan untuknya "JavaScript Engineer". seorang pengaturcara pembangunan bahagian belakang WEB, anda mesti tahu JavaScript Sekurang-kurangnya dalam beberapa keperluan kerja yang berkaitan, anda boleh melihat perkataan "familiarity with JavaScript is preferred". Saya juga ingin memberitahu anda bahawa anda akan dapat membangunkan perisian desktop dengan JavaScript, terima kasih kepada satu lagi model pembangunan Adobe AIR, iaitu membangunkan AIR dengan HTML CSS JavaScript.
1.Jenis objek
1. Cipta:
var dog = new Object();
Biasa digunakan untuk menyimpan dan menghantar data. Contohnya, storan:
var person = new Object(); person.name = "Nicholas"; person.age = 29;
Cara kedua untuk mencipta: (Apabila mencipta, nama atribut juga boleh dalam format rentetan, iaitu, anda boleh menambah petikan pada nama atribut.)
var person = { name : "Nicholas", age : 29 };
2. Dapatkan nilai atribut: person["name"]; atau: person.name;
2.Jenis tatasusunan
Tatasusunan yang sama boleh menyimpan apa-apa jenis data (hodgepodge).
1. Tatasusunan boleh dilaraskan secara dinamik (tambah satu lagi data, ia akan membesar dengan sendirinya, ia tidak mati.).
2. Cipta:
var stars=new Array();//方式1 var stars=new Array(20);//方式2 var stars=new Array("周杰伦","林俊杰","孙燕姿");//方式3 var stars=Array(20);//方式4 var stars=["周杰伦","孙燕姿","林俊杰"];//方式6
3. Contoh pelarasan dinamik:
var stars=["周杰伦","林俊杰","孙燕姿"]; stars[1]="JJ";//动态改变(把林俊杰变为JJ) stars[3]="皮裤汪";//动态增长(加了一个长度) stars.length=1;//动态强制缩减(林俊杰、孙燕姿、皮裤汪强制移除,长度变为1)
4. Kesan tatasusunan: Array.isArray(nilai);
5 Gunakan join() untuk menukar tatasusunan kepada rentetan terhad:
var stars = ["周杰伦", "王尼玛", "张全蛋"]; alert(stars .join(",")); //周杰伦,王尼玛,张全蛋 alert(stars .join("-")); //周杰伦-王尼玛-张全蛋
6. Anda boleh menggunakan tatasusunan seperti tindanan (pop() keluar, tolak() masuk).
7. Tatasusunan boleh digunakan seperti baris gilir. (Menggabungkan shift() dan push()):
var stars = new Array(); //create an array var count = colors.push("周杰伦", "王尼玛"); //push two items alert(count); //2 count = stars .push("张全蛋"); //push another item on alert(count); //3 var item = colors.shift(); //get the first item alert(item); //周杰伦 alert(colors.length); //2 /**所谓栈变队列,其实就是把栈颠倒过来再拉取*/
8.
1.reverse()Terbalikkan susunan tatasusunan; (kembali tatasusunan yang diisih)
2.sort()Isih daripada kecil ke besar. Tetapi ia diisih mengikut rentetan, bukan mengikut nombor: (mengembalikan tatasusunan yang diisih).
var values = [, , , , ]; values.sort(); alert(values); //,,,,
Untuk mengisih seperti yang anda harapkan, anda boleh menambah fungsi perbandingan sebagai parameter untuk mengisih():
function compare(value, value) { if (value < value) { return -; } else if (value > value) { return ; } else { return ; } } var values = [, , , , ]; values.sort(compare); alert(values); //,,,,
Versi ringkas fungsi perbandingan (isihan hanya mengambil berat sama ada ia mengembalikan nombor positif, nombor negatif atau 0):
function compare(value1,value2){ return value2 - value1; }
9. Operasi pada tatasusunan: mencantum, menghiris, mencantum.
1. Sambungan : gunakan concat, memori: concat-->concatenate: sambungan, rantai.
Contoh:
var stars = ["周杰伦", "王尼玛", "张全蛋"]; var stars = stars .concat("太子妃", ["花千骨", "梅长苏"]); alert(stars); //周杰伦,王尼玛,张全蛋 alert(stars); //周杰伦,王尼玛,张全蛋,太子妃,花千骨,梅长苏
2. Gunakan slice, memory: slice translation: slice. Contoh:
var stars = ["梅长苏", "誉王", "靖王", "霓凰", "飞流"]; var stars= stars.slice(); var stars= stars.slice(,); alert(stars); //誉王,靖王,霓凰,飞流(从第一个位置开始切) alert(stars); //誉王,靖王,霓凰(从第个位置切到第个位置,表示半封闭,不包含)
3. Penyambungan. sambung. Berkuasa. Boleh dipadam, dimasukkan, diganti.
1.Padamkan sebarang bilangan item: Contohnya: sambung(0,2), padamkan item ke-0 dan pertama (selang separuh tertutup) (kembalikan item yang dipadam).
2.Masukkan sebarang bilangan item pada kedudukan yang ditentukan: contohnya: sambat(2,0,"Jay Chou","王尼马"), masukkan Jay Chou dan Wang NIMA bermula dari kedudukan ke-2 Dua item.
3.Masukkan sebarang bilangan item pada kedudukan yang ditentukan dan padamkan sebarang bilangan item pada masa yang sama. Contohnya: sambung(2,1,"Jay Chou","Wang Nima"), padam satu item dari kedudukan kedua, dan kemudian mula memasukkan dua item, Jay Chou dan Wang Nima.
10 Kaedah kedudukan: indexOf, lastIndexOf;
11. Kaedah berulang: Terbahagi kepada: lulus hanya jika semua layak, lulus jika mana-mana yang layak, menapis beberapa baki, pemetaan satu-satu, pertanyaan berulang dan pengurangan.
1. Lulus hanya jika semua layak:
var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.every(function(item, index, array){ return (item > 2); }); alert(everyResult); //false
2. Lulus jika anda lulus mana-mana:
var numbers = [1,2,3,4,5,4,3,2,1]; var someResult = numbers.some(function(item, index, array){ return (item > 2); }); alert(someResult); //true
3. Tapis bahagian sisa:
var numbers = [1,2,3,4,5,4,3,2,1]; var filterResult = numbers.filter(function(item, index, array){ return (item > 2); }); alert(filterResult); //[3,4,5,4,3]
4. Pemetaan satu dengan satu:
var numbers = [1,2,3,4,5,4,3,2,1]; var mapResult = numbers.map(function(item, index, array){ return item * 2; }); alert(mapResult); //[2,4,6,8,10,8,6,4,2]
6. Kurangkan: kurangkan.
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev, cur, index, array){ return prev + cur; }); alert(sum);//15
累加求和返回,5项缩为1项。
3.RegExp类型
1.var expression=/ pattern / flags;
2.flags分三种:g(global全局模式,应用于所有字符串)、i(case-insensive,忽略字母大小写)、m(multiline,多行模式,一行检验完了接着下一行。)。举例:
/**匹配字符串中所有'at'的实例*/ var pattern1=/at/g; /**匹配第一个'bat'或'cat',不分大小写*/ var pattern2 =/[bc]at/i; /**匹配所有以'at'结尾的3个字符组合,不分大小写*/ var pattern3=/.at/gi;
3.模式中所有的元字符必须转义,元字符:( { [ \ ^ $ | ) ? * + . ] }
4.Function类型
1.每个函数都是Function类型的实例,而且与其他引用类型一样,都有属性和方法。
2.函数的两种定义方法:
方法1:
function sum(a,b){ return a + b; }
方法2:
var sum=function(a,b){ return a + b; }
3.函数没有重载。
5.Boolean、Number、String:基本包装类型
var a="Jay Chou is a superstar"; var b=a.substring(0,8);
上例中,a是基本类型,但是a可以调用substring方法,是因为,后台自动完成a的包装操作,创建String类型的一个实例。Boolean,Number也类似。
6.单体内置对象,不需要实例化,直接使用,如:Math,Global。
1.所有全局作用域中定义的函数、变量,都是Global对象的方法,比如:parseInt,isNaN等。
2.eval()方法也是Global对象的方法,它负责解析javascript。
3.Math对象是保存数学公式和相关信息的。它有很多方法, 如:min求最小值,max求最大值,ceil()向上取整,floor向下取整,round四舍五入,random取随机数。
ps:引用类型理解:变量的交换等于把现有一间店的钥匙(变量引用地址)复制一把给了另外一个老板,此时两个老板同时管理一间店,两个老板的行为都有可能对一间店的运营造成影响。
引用类型例子
function chainStore() { var store1=['Nike China']; var store2=store1; alert(store2[0]); //Nike China store1[0]='Nike U.S.A.'; alert(store2[0]); //Nike U.S.A. } chainStore(); //在上面的代码中,store2只进行了一次赋值,理论上它的值已定,但后面通过改写store1的值,发现store2的值也发生了改变,这正是引用类型的特征,也是我们要注意的地方