참조 유형은 JavaScript에서 매우 중요합니다. 참조 유형은 데이터와 기능을 함께 구성하는 데 사용되는 데이터 구조입니다. 개체 유형의 속성과 메서드를 설명합니다. Object는 기본 유형, Array는 배열 유형, Date는 날짜 유형, RegExp는 정규식 유형 등입니다.
자바스크립트 수용
한때 알려지지 않았던 JavaScript는 AJAX의 인기로 그 가치가 두 배로 높아졌습니다. 이제 JavaScript는 더 이상 WEB 개발에 꼭 필요한 보조 도구가 아닙니다. WEB 백엔드 개발 프로그래머라면 최소한 JavaScript를 알아야 합니다. 적어도 일부 관련 직업 요구 사항에서는 "JavaScript에 익숙한 것이 선호됩니다"라는 말을 볼 수 있습니다. HTML+CSS+JavaScript로 AIR를 개발하는 Adobe AIR의 또 다른 개발 모델 덕분에 JavaScript로 데스크톱 소프트웨어를 개발할 수 있게 될 것이라고 말씀드리고 싶습니다.
1.객체 종류
1. 만들기:
var dog = new Object();
데이터를 저장하고 전송하는 데 일반적으로 사용됩니다. 예를 들어 저장공간은 다음과 같습니다.
var person = new Object(); person.name = "Nicholas"; person.age = 29;
두 번째 생성 방법: (생성 시 속성 이름을 문자열 형식으로 지정할 수도 있습니다. 즉, 속성 이름에 따옴표를 추가할 수 있습니다.)
var person = { name : "Nicholas", age : 29 };
2. 속성 값 가져오기: person["name"] 또는: person.name;
2.배열형
동일한 어레이는 모든 유형의 데이터(혼돈)를 저장할 수 있습니다.
1. 배열은 동적으로 조정될 수 있습니다(데이터를 하나 더 추가하면 길이가 저절로 늘어나며 죽지 않습니다.).
2. 만들기:
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. 동적 조정 예:
var stars=["周杰伦","林俊杰","孙燕姿"]; stars[1]="JJ";//动态改变(把林俊杰变为JJ) stars[3]="皮裤汪";//动态增长(加了一个长度) stars.length=1;//动态强制缩减(林俊杰、孙燕姿、皮裤汪强制移除,长度变为1)
4. 배열 감지: Array.isArray(value);
5. Join()을 사용하여 배열을 구분된 문자열로 변환합니다.
var stars = ["周杰伦", "王尼玛", "张全蛋"]; alert(stars .join(",")); //周杰伦,王尼玛,张全蛋 alert(stars .join("-")); //周杰伦-王尼玛-张全蛋
6. 스택과 같은 배열을 사용할 수 있습니다(pop() out, push() in).
7. 배열은 대기열처럼 사용될 수 있습니다. (shift()와 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()배열 순서를 반대로 바꿉니다(정렬된 배열 반환)
2.sort()작은 것부터 큰 것 순으로 정렬합니다. 그러나 숫자가 아닌 문자열을 기준으로 정렬됩니다. (정렬된 배열을 반환합니다)
var values = [, , , , ]; values.sort(); alert(values); //,,,,
원하는 방식으로 정렬하려면 sort()에 매개변수로 비교 함수를 추가할 수 있습니다.
function compare(value, value) { if (value < value) { return -; } else if (value > value) { return ; } else { return ; } } var values = [, , , , ]; values.sort(compare); alert(values); //,,,,
비교 함수의 단순화된 버전(정렬은 양수, 음수 또는 0 반환 여부만 고려함):
function compare(value1,value2){ return value2 - value1; }
9. 배열 작업: 결합, 슬라이싱, 접합.
1. 연결 : concat 사용, 메모리: concat-->concatenate: 연결, 체인.
예:
var stars = ["周杰伦", "王尼玛", "张全蛋"]; var stars = stars .concat("太子妃", ["花千骨", "梅长苏"]); alert(stars); //周杰伦,王尼玛,张全蛋 alert(stars); //周杰伦,王尼玛,张全蛋,太子妃,花千骨,梅长苏
2.슬라이스. 슬라이스, 메모리 사용: 슬라이스 번역: 슬라이스. 예:
var stars = ["梅长苏", "誉王", "靖王", "霓凰", "飞流"]; var stars= stars.slice(); var stars= stars.slice(,); alert(stars); //誉王,靖王,霓凰,飞流(从第一个位置开始切) alert(stars); //誉王,靖王,霓凰(从第个位置切到第个位置,表示半封闭,不包含)
3.접합. 접착. 강한. 삭제, 삽입, 교체가 가능합니다.
1.항목 수에 관계없이 삭제: 예: splice(0,2), 0번째 및 1번째 항목(반 닫힌 간격)을 삭제합니다(삭제된 항목 반환).
2.지정된 위치에 원하는 수의 항목을 삽입합니다. 예: splice(2,0,"Jay Chou","王尼马"), Jay Chou 및 Wang NIMA를 다음에서 시작하여 삽입합니다. 2위 항목은 2개입니다.
3.지정된 위치에 원하는 만큼의 항목을 삽입하고 동시에 원하는 만큼의 항목을 삭제하세요. 예: splice(2,1,"Jay Chou","Wang Nima"), 두 번째 위치에서 항목 하나를 삭제한 다음 Jay Chou와 Wang Nima라는 두 항목을 삽입하기 시작합니다.
10. 위치 방식: indexOf, lastIndexOf;
11. 반복 방법: 다음으로 구분됩니다: 모두 자격이 있는 경우에만 통과, 하나라도 자격이 있으면 통과, 일부 잔여물 필터링, 일대일 매핑, 반복 쿼리 및 축소.
1. 모두 자격을 갖춘 경우에만 통과:
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보다 큰 경우에만 true가 반환됩니다.
2. 하나라도 합격하면 합격:
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
위의 예에서 1이 2보다 크면 true를 반환합니다.
3. 찌꺼기 부분 필터링 :
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]
위의 예에서는 2보다 큰 모든 값이 필터링됩니다.
4. 일대일 매핑:
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]
위 예에서는 각 항에 2를 곱합니다.
5. 반복: for-each를 사용합니다.
6. 줄이다: 줄이다.
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的值也发生了改变,这正是引用类型的特征,也是我们要注意的地方