JavaScript의 모든 변수는 객체이며 두 가지 예외가 널과 정의되지 않았습니다.
코드 사본은 다음과 같습니다.
false.toString ();
[1, 2, 3] .ToString ();
함수 foo () {}
foo.bar = 1;
foo.bar; // 1
일반적인 오해는 숫자의 문자 값이 대상이 아니라는 것입니다. 이는 부동 소수점 수치 수치의 일부로 포인트 연산자를 구문 분석하려는 JavaScript 파서의 버그 때문입니다.
코드 사본은 다음과 같습니다.
2.tostring (); // 오류 : SyntaxError
숫자의 문자 값을 객체처럼 보이게하기위한 많은 해결 방법이 있습니다.
코드 사본은 다음과 같습니다.
2..TOSTRING (); // 두 번째 점은 정상적으로 구문 분석 할 수 있습니다
2. TOSTRING (); // 점 앞의 공간에주의를 기울입니다
(2) .toString ();
데이터 유형으로 객체
JavaScript 객체는 해시 테이블로 사용할 수 있으며 주로 명명 된 키와 값 사이의 서신을 저장하는 데 사용됩니다.
객체의 문자 구문을 사용하면 - {} - - 간단한 객체를 만들 수 있습니다. 이 새로 생성 된이 객체는 사용자 정의 속성없이 객체의 프로토 타입에서 상속합니다.
코드 사본은 다음과 같습니다.
var foo = {};
// 값이 12 인 사용자 정의 속성 '테스트'가있는 새 개체
var bar = {test : 12};
액세스 속성
객체의 속성에 액세스하는 방법, 도트 연산자 또는 브래킷 연산자에 액세스하는 두 가지 방법이 있습니다.
코드 사본은 다음과 같습니다.
var foo = {name : 'kitten'}
foo.name; // 새끼 고양이
foo [ 'name']; // 고양이
var get = 'name';
foo [get]; // 고양이
foo.1234;
foo [ '1234'];
두 개의 구문은 동일하지만 브래킷 연산자는 다음 두 가지 상황에서 여전히 유효합니다 - 동적으로 설정 속성 - 속성 이름은 유효한 변수 이름이 아닙니다 (번역기 참고 : 속성 이름에는 공백 또는 속성 이름이 JS의 키워드)
번역기 주 : JSLINT 구문 감지 도구에서 포인트 연산자가 권장됩니다.
속성을 삭제합니다
속성을 삭제하는 유일한 방법은 삭제 연산자를 사용하는 것입니다.
코드 사본은 다음과 같습니다.
14
var obj = {
바 : 1,
Foo : 2,
바즈 : 3
};
obj.bar = 정의되지 않은;
obj.foo = null;
obj.baz 삭제;
for (var i in obj) {
if (obj.hasownproperty (i)) {
console.log (i, '' + obj [i]);
}
}
위의 출력 결과에는 막대가 정의되지 않고 Foo Null이 있습니다. BAZ 만 실제로 삭제되므로 출력 결과에서 사라집니다.
속성 이름의 구문
코드 사본은 다음과 같습니다.
var test = {
'case': '나는 키워드이므로 문자열로 표시되어야합니다.',
삭제 : '나도 키워드입니다.'// 오류 : SyntaxError
};
객체의 속성 이름은 문자열 또는 일반 문자를 사용하여 선언 할 수 있습니다. 그러나 JavaScript Parser의 또 다른 잘못 디자인으로 인해 위의 두 번째 선언 방법은 ECMAScript 5 전에 구문 오류가 발생합니다.
이 오류의 이유는 Delete가 JavaScript 언어의 키워드이기 때문에 JavaScript 엔진의 하위 버전에서 정상적으로 실행되기 때문입니다.