/*
배열 및 객체 [JavaScript 최종 가이드, 5판]
*/
/*
객체: 순서가 지정되지 않은 속성 집합입니다. 속성 각각에는 고유한 이름과 값이 있습니다*/
/* 객체를 생성하는 간단한 방법, 객체 직접 수량*/
var obj =
var obj = {name: 'maxthon '};
var obj = {name: {}, text: []};
/* 새로운 연산자를 사용할 수 있습니다*/
var a = new Array(); var d = new Date();
var r = new RegExp('javascript', 'i');
var o = new Object(); 참고: new 연산자 뒤에는 생성자가 있으므로
typeof Array; // 'function'
typeof Object; // 'function'
Object는 Function의 인스턴스입니다. 객체 예시의 특수 객체입니다.
/* 객체 속성*/
// 속성 값에 액세스하는 데 사용합니다. 동시에 사용되며 속성은 Name 내에서 사용됩니다(변수를 사용할 수 있으며 이는 특히 유용합니다).
t.text = 'hello'; {};
t.o.name = 'rd';
t.n = [];
var t = {
"text": "hello"
콘솔 .log(t.text); // 'hello' ;
// 보충: var 키워드는 일반적으로 변수를 선언하는 데 사용되지만 객체 속성을 선언할 때는 var를 사용하여
/* 객체 열거*/
var F = function () {};
F.prototype.name = 'RD'
var obj = new F; var key in obj) {
console.log(key) ; // name;
}
// 객체 자체만 열거하고 프로토타입 체인을 검색하지 마세요.
(obj의 var 키) {
if (obj.hasOwnProperty(key )) {
console.log(key); //
}
}
/* 참고: for in은 할 수 없습니다. 미리 정의된 속성을 열거합니다. */
/* 속성 존재 확인*/
window.a = 'rd'
console.log(a in window); // true;
var F = function () {};
F.prototype.name = 'RD'
var obj = new F; ' in obj); // true;
var toString = Object.prototype.toString;
// 객체 obj에 getName 메서드가 포함되어 있으면 이를 실행합니다. if (obj.getName && toString.call(obj.getName ) === '[객체 함수]') ) {
obj.getName()
}
// 보충:
console.log(null == undefine); / / true;
console.log(null !== undefine); // true; 🎜>delete obj.name;
// 보충: delete 연산자를 사용하면 var를 사용하여 선언된 변수를 삭제할 수 없습니다.
/* 연관 배열로서의 객체*/
// 객체 속성 가져오기:
obj.name ;
obj['name']; // 여기서 name은 문자열입니다.
// []를 사용하여 표현하면 속성 이름은 다음과 같습니다.
// 작업 중 작업 추가
// 참고: 이 속성은 변수로 전달될 때 특히 유용합니다.
// 연관 배열
/* 매핑: JavaScript 객체 핸들 문자열(속성 이름)이 값에 매핑됩니다. */
for (var key in obj) {
console.log(key); , 여기에 값으로 존재합니다.
/*
공통 객체 속성 및 메서드
JavaScript의 모든 객체는 Object 클래스에서 상속됩니다. 🎜>
1, 생성자 속성.
*/
var F = function () {}
var f = new F; (f.constructor == F); / / true
// 생성자의 프로토타입에는 자신을 가리키는 생성자가 있습니다.
F.prototype.constructor == F; >// 보충:
var F = function ( ) {};
var G = function () {}
G.prototype = new F
var g = new G; ;
console.log(g.constructor == F); // true;
console.log(g.constructor == G) // false를 사용할 수 있습니다. ;
/*
2, toString() 메소드
*/
{'name': 'maxthon'}.toString() // '[object Object] '
/* 배열은 toString 메소드를 사용하고, 요소를 문자열로 결합하면 다른 객체는 [object Object]로 변환됩니다.
함수는 원래 toString 메소드를 사용하며, 함수 소스 코드는 획득됨*/
['a', 'b', 1, false, [' e','f'], {}].toString()
// "a,b,1, false,e,f,[객체 객체]"
function t() {
console.log('test');
}
t.toString();
// 소스 코드
/*
3, toLocalString();
객체의 현지화된 문자열을 반환합니다.
4, valueOf()>는 기본 유형.valueOf/toString.
5, hasOwnProperty();
6, propertyIsEnumberable();
열거 가능 여부;
7, isPrototyeOf( b);
a가 b의 프로토타입이면 true를 반환합니다.
* /
var o = {} // new Object; true;
Object.isPrototyeOf(o); // false; >
/* [함수 인스턴스가 존재할 때 클로저가 존재합니다. 가비지가 재활용되지 않으면 할당 참조가 존재합니다. ] */
/*
배열: 순서가 지정된 컬렉션
요소라고도 하는 각 값은 아래 첨자에 해당합니다.
아래 첨자는 0부터 시작합니다.
배열의 값은 배열, 개체, null 등이 될 수 있습니다. 정의되지 않음
// 생성.
var arr = []
var arr = new Array(); 🎜>var arr = [1,2,3, null, 정의되지 않음, [], {}, t];
/* new 연산자를 사용하여 배열을 생성하는 세 가지 경우: */
var arr = new Array() // [], 직접 수량과 동일
var arr = new Array(5); // 길이는 5입니다.
console.log(arr) // []; >
var arr = new Array('5'); // 값은 ['5']입니다.
var arr = new Array('test'); // 값은 ['test']입니다. ;
/* 관련 예*/
var s = [1, 2, 3] = 'a'
console.log(s); 🎜>[ 1, 2, 3, 정의되지 않음, 정의되지 않음, 'a']
/* 배열 읽기 및 쓰기*/
value = array[0] ;
a[1] = 3.14;
a[i] = 3; // 배열 -> 객체-> 속성
array.test = 'rd'
// 배열 첨자는 0보다 크거나 같고 2보다 작습니다. 32 빼기 1의 거듭제곱입니다.
/ / 다른 값의 경우 JavaScript는 더 이상 아래 첨자가 아닌 개체 속성의 이름으로 사용되는 문자열로 변환됩니다. var array = [];
array[9] = 10; // 배열의 길이는 10이 됩니다.
// 참고: JavaScript 인터프리터는 배열 인덱스가 9인 요소에만 메모리를 할당하며 다른 인덱스는 할당하지 않습니다.
var array = [];
array.length = 10; // 배열의 길이를 추가합니다.
array[array.length] = 4; /* 배열 요소 삭제*/
// 삭제 연산자 배열 요소가 정의되지 않은 값으로 설정되었지만 요소 자체는 여전히 존재합니다.
// 실제로 삭제하려면 다음을 사용할 수 있습니다. Array.shift(); [첫번째 삭제] Array.pop(); [마지막 삭제] Array .splice(); [배열에서 연속된 범위 삭제] 또는 Array.length 길이 수정; 예제*/
var a = [1, 2, 3];
delete a[1]
console.log(a) // [1, 정의되지 않음, 3]; 🎜>/* 보충 자료: JavaScript 최종 가이드, 5판, 59페이지
by var 선언된 변수는 영구적입니다. 즉, 삭제 연산자를 사용하여 이러한 변수를 삭제하면 오류가 발생합니다.
그러나 : 개발자 도구에서는 책 쓰기에서 언급한 대로 웹 페이지에서 삭제할 수 있습니다.
*/
/* 배열 길이*/
[]. length;
/* 배열 탐색*/
var array = [1, 2, 3, 4, 5]
for (var i = 0, l = array. length; i < l; i ) {
console.log(array[i])
}
array.forEach(function (item, index, arr) {
console .log(item);
});
/* 배열: 앞에서 언급한 대로 올바른 길이*/
/* 다차원 배열*/
[[ 1], [2]]
/* 배열 방법*/
// Join
var array = [1, 2, 3, 4, 5]
var str = array .join(); // 1,2,3,4,5
var str = array.join('-') // 1-2-3-4-5
// 참고: 메서드는 String.split() 메서드와 반대입니다.
// reverse() ;
var array = [1, 2, 3, 4, 5]; ; // [5, 4, 3, 2, 1]
// 참고: 원본 배열을 수정했습니다.
// sort()
var array = [1, 3, 2, 4, 5, 3];
array.sort();// [1, 2, 3, 3, 4, 5];
/* 참고: 배열에 정의되지 않은 요소가 있습니다. 마지막에*/
/* 정렬을 사용자 정의할 수도 있습니다. sort(func)
func는 두 번째 매개변수 앞에 두 개의 매개변수를 받습니다. 그러면 비교 함수가 반환됩니다. 0보다 작은 숫자. 반대로 0보다 큰 숫자를 반환합니다. 같으면 0을 반환합니다.
* /
array.sort(function (a, b) {
return b - a;
});
// 예: 홀수에서 짝수로, 작은 것에서 큰 것으로 정렬
[1, 2, 3, 4, 5, 6, 7, 2, 4 , 5, 1].sort(함수 (a, b) {
if (a % 2 && b % 2) {
return a - b;
}
if (a % 2) {
return -1
}
if (b % 2) {
return 1
}
return a - b; 🎜>
});
// 배열을 결합하지만 깊이는 결합하지 않습니다.
var a = [1, 2, 3]; concat(4, 5); // [1, 2, 3, 4, 5]
a.concat([4, 5]) // [1, 2, 3, 4, 5]
a.concat([4, 5], [8, 9]); // [1, 2, 3, 4, 5, 8, 9]
a.concat([4, 5], [6, [10, 19]]); // [1, 2, 3, 4, 5, 6, [10, 19] ]
// 소스 배열은 그렇지 않습니다. 변경
var a = [1, 2, 3, 4, 5]
a.slice(0, 3) // [1, 2, 3]
a.slice(3) ; // [4, 5];
a.slice(1, -1) // [2, 3, 4]
a.slice(1, -1 5)
a.slice (1, 4);
a.slice(-3, -2); // [3]
a.slice( -3 5, -2 5); 3)
/* 참고:
에는 두 번째 매개변수로 지정된 요소가 포함되지 않습니다.
음수 값은 음수 값 배열 길이
*/
로 변환됩니다. // splice(pos[, len[, a, b]]) 메소드. 지정된 위치를 삭제한 후 길이 요소를 추가합니다.
// 삭제된 요소로 구성된 배열을 반환합니다. 배열이 변경되었습니다.
var a = [1, 2, 3, 4, 5, 6, 7, 8]
a.splice(4) // [ 5, 6, 7, 8]; 이때 a: [1, 2, 3, 4]
a.splice(1, 2); // [2, 3] 이때 a: [1, 4 ]; splice(1, 1); // [4]; 이때 a:
var a = [1, 2, 3, 4, 5]; 2, 0, 'a', 'b'); // [1, 2, 'a', 'b', 3, 4, 5]
a.splice(2, 2 , [1, 2] , 3); // ['a', 'b']; 이때 a: [1, 2, [1, 2], 3, 3, 4, 5]
/* 참고:
두 번째 매개변수 뒤의 매개변수는 처리 배열에 직접 삽입됩니다.
첫 번째 매개변수는 음수일 수 있습니다.
// push() 메서드와 pop() 메서드는
// push() 중 하나를 변환할 수 있습니다. more는 배열의 끝에 새 요소를 추가한 다음 배열의 새 길이를 반환합니다.
// pop()은 배열의 마지막 요소를 삭제하고 배열의 길이를 줄인 다음 해당 값을 반환합니다.
// 참고: 두 개의 각 메서드는 배열의 수정된 복사본을 생성하는 대신 원본 배열을 수정합니다.
var stack = []
stack.push(1, 2); // 스택: [1, 2 ]; return 2;
stack.pop(); // 스택: [1]; 삭제된 요소 값
stack.push(3); [1, 3]; return 2;
stack.pop(); // 스택: [1]; 삭제된 요소 값
stack.push([4, 5]); [1, [4, 5]]returm 2;
stack.pop(); // 스택: [1]; 삭제된 요소 값
// 메소드 및 Shift() 메소드. 위와 동일하며 배열의 선두부터 시작합니다.
// toString() 메소드 및 toLocalString()
[1, 2, 4].toString (); // 1,2,3 ;
['a', 'b', 'c'].toString() // 'a,b,c'// 매개변수가 없는 조인 메소드.
/* 새로운 jsapi 메소드: map, Every, some, filter, forEach, indexOf, lastIndexOf, isArray */
/* Array- like object*/
인수
document.getElementsByTagName()