Les types de référence sont très importants en JavaScript. Un type référence est une structure de données utilisée pour organiser les données et les fonctionnalités ensemble. Il décrit les propriétés et les méthodes d'un type d'objet. Object est un type de base, Array est un type de tableau, Date est un type de date, RegExp est un type d'expression régulière, etc.
Adoptez JavaScript
Le JavaScript autrefois inconnu a doublé de valeur avec la popularité d'AJAX. Désormais, JavaScript n'est plus seulement un outil auxiliaire indispensable dans le développement WEB. Il existe même un poste qui lui est dédié "JavaScript Engineer". En tant que programmeur de développement backend WEB, vous devez connaître JavaScript. Au moins dans certaines exigences du poste pertinentes, vous pouvez voir les mots « la connaissance de JavaScript est préférable ». Je tiens même à vous dire que vous pourrez développer des logiciels de bureau avec JavaScript, grâce à un autre modèle de développement d'Adobe AIR, qui consiste à développer AIR avec HTML CSS JavaScript.
1.Type d'objet
1. Créer :
var dog = new Object();
Couramment utilisé pour stocker et transmettre des données. Par exemple, le stockage :
var person = new Object(); person.name = "Nicholas"; person.age = 29;
La deuxième façon de créer : (Lors de la création, le nom de l'attribut peut également être au format chaîne, c'est-à-dire que vous pouvez ajouter des guillemets au nom de l'attribut.)
var person = { name : "Nicholas", age : 29 };
2. Obtenez la valeur de l'attribut : personne["name"] ou : person.name;
2.Type de tableau
Le même tableau peut stocker tout type de données (un méli-mélo).
1. Le tableau peut être ajusté dynamiquement (ajoutez une donnée supplémentaire, il grandira tout seul, il n'est pas mort.).
2. Créer :
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. Exemple d'ajustement dynamique :
var stars=["周杰伦","林俊杰","孙燕姿"]; stars[1]="JJ";//动态改变(把林俊杰变为JJ) stars[3]="皮裤汪";//动态增长(加了一个长度) stars.length=1;//动态强制缩减(林俊杰、孙燕姿、皮裤汪强制移除,长度变为1)
4. Détecter le tableau : Array.isArray(value);
5. Utilisez join() pour convertir le tableau en une chaîne délimitée :
var stars = ["周杰伦", "王尼玛", "张全蛋"]; alert(stars .join(",")); //周杰伦,王尼玛,张全蛋 alert(stars .join("-")); //周杰伦-王尼玛-张全蛋
6. Vous pouvez utiliser des tableaux comme des piles (pop() out, push() in).
7. Les tableaux peuvent être utilisés comme des files d'attente. (Combinant shift() et 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. Tri.
1.reverse()Inverser l'ordre du tableau (renvoie le tableau trié)
2.sort()Trier du petit au grand. Mais il est trié par chaînes, pas par nombres : (renvoie le tableau trié).
var values = [, , , , ]; values.sort(); alert(values); //,,,,
Pour trier comme vous le souhaitez, vous pouvez ajouter une fonction de comparaison en tant que paramètre à sort() :
function compare(value, value) { if (value < value) { return -; } else if (value > value) { return ; } else { return ; } } var values = [, , , , ]; values.sort(compare); alert(values); //,,,,
Version simplifiée de la fonction de comparaison (le tri se soucie uniquement de savoir s'il renvoie un nombre positif, un nombre négatif ou 0) :
function compare(value1,value2){ return value2 - value1; }
9. Opérations sur les tableaux : joindre, trancher, épisser.
1. Connexion : utiliser concat, mémoire : concat-->concaténer : connexion, chaîne.
Exemple :
var stars = ["周杰伦", "王尼玛", "张全蛋"]; var stars = stars .concat("太子妃", ["花千骨", "梅长苏"]); alert(stars); //周杰伦,王尼玛,张全蛋 alert(stars); //周杰伦,王尼玛,张全蛋,太子妃,花千骨,梅长苏
2. Tranche . Utiliser slice, mémoire : slice traduction : slice. Exemple :
var stars = ["梅长苏", "誉王", "靖王", "霓凰", "飞流"]; var stars= stars.slice(); var stars= stars.slice(,); alert(stars); //誉王,靖王,霓凰,飞流(从第一个位置开始切) alert(stars); //誉王,靖王,霓凰(从第个位置切到第个位置,表示半封闭,不包含)
3. Épissage. épissure. Puissant. Peut être supprimé, inséré, remplacé.
1.Supprimer n'importe quel nombre d'éléments : Par exemple : splice(0,2), supprimer les 0ème et 1er éléments (intervalle semi-fermé) (renvoyer les éléments supprimés).
2.Insérez n'importe quel nombre d'éléments à la position spécifiée : par exemple : splice(2,0,"Jay Chou","王尼马"), insérez Jay Chou et Wang NIMA à partir de la 2ème position Deux éléments.
3.Insérez n'importe quel nombre d'éléments à la position spécifiée et supprimez n'importe quel nombre d'éléments en même temps. Par exemple : splice(2,1,"Jay Chou","Wang Nima"), supprimez un élément de la deuxième position, puis commencez à insérer deux éléments, Jay Chou et Wang Nima.
10. Méthode de positionnement : indexOf, lastIndexOf;
11. Méthode itérative : Divisée en : réussite uniquement si tous sont qualifiés, réussite si l'un d'entre eux est qualifié, filtrage de certains résidus, mappage un à un, requête itérative et réduction.
1. Passer seulement si tous sont qualifiés :
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
Dans l'exemple ci-dessus, true sera renvoyé uniquement si chaque élément est supérieur à 2.
2. Passez si vous dépassez quelqu'un :
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
Dans l'exemple ci-dessus, si un est supérieur à 2, il retournera vrai.
3. Filtrer une partie des résidus :
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]
Dans l'exemple ci-dessus, toutes les valeurs supérieures à 2 sont filtrées.
4. Cartographie individuelle :
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]
Dans l'exemple ci-dessus, multipliez chaque terme par 2.
5. Itération : utiliser pour chaque.
6. Réduire : réduire.
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的值也发生了改变,这正是引用类型的特征,也是我们要注意的地方