자바스크립트 연구 노트: 객체(1): 객체의 사용과 속성_기본 지식

WBOY
풀어 주다: 2016-05-16 16:43:11
원래의
1274명이 탐색했습니다.
false.toString(); // 'false'
[1, 2, 3].toString(); // '1,2,3'

function Foo(){}
Foo.bar = 1;
Foo.bar; // 1
로그인 후 복사

자주 오해되는 점은 숫자 상수는 객체로 간주될 수 없다는 것입니다. 실제로 숫자 상수는 여전히 객체로 간주될 수 있습니다. 이는 자바스크립트 파서가 도트 연산자를 파싱할 때 이를 부동 소수점 특성으로 취급하는 실수를 하기 때문입니다.

2.toString(); // SyntaxError 발생

실제로 숫자 상수를 객체처럼 동작하게 만드는 방법은 많습니다.

2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first
로그인 후 복사

데이터 유형의 개체

Javascript의 객체는 주로 키와 값 간의 대응을 포함하는 해시 테이블로 사용될 수 있습니다.
간단한 객체를 생성하려면 {} 기호를 사용하세요. 이 새 객체는 Object.prototype에서 상속되며 자체 속성을 포함하지 않습니다.

var foo = {}; // a new empty object
// a new object with a 'test' property with value 12
var bar = {test: 12}; 
로그인 후 복사

객체 속성에 액세스

Javascript 객체에 액세스하는 데에는 점 연산자와 대괄호 연산자 []라는 두 가지 방법을 사용할 수 있습니다.

var foo = {name: 'kitten'}
foo.name; // kitten
foo['name']; // kitten

var get = 'name';
foo[get]; // kitten

foo.1234; // SyntaxError
foo['1234']; // works
로그인 후 복사

두 연산자의 효과는 거의 동일합니다. 유일한 차이점은 대괄호 연산자를 사용하면 속성을 동적으로 설정할 수 있으며 속성 이름에 구문 오류가 있을 수 있다는 것입니다. (위 예시에서는 세 번째 상황을 설명했습니다.)

개체 속성 삭제

속성을 삭제하는 유일한 방법은 삭제를 사용하는 것입니다. 속성 값을 정의되지 않음 또는 null로 설정하면 속성과 연결된 값만 제거되고 실제로 속성 자체는 삭제되지 않습니다.

var obj = {
 bar: 1,
 foo: 2,
 baz: 3
};
obj.bar = undefined;
obj.foo = null;
delete obj.baz;

for(var i in obj) {
 if (obj.hasOwnProperty(i)) {
 console.log(i, '' + obj[i]);
 }
}
로그인 후 복사

위의 출력 bar undefine 및 foo null, baz만 실제로 삭제됩니다.
여기서 주목해야 할 점은 삭제는 변수가 아닌 속성만 삭제할 수 있다는 것입니다. 따라서 변수를 정의할 때 언제든지 var 키워드를 사용하여 변수를 선언해야 합니다. var를 작성하지 않으면 변수가 전역 개체에 대해 생성된 새 속성으로 잘못 인식되기 때문입니다.

이 예는 아주 명확하게 대답을 제공합니다. a는 변수이고 b는 전역 객체의 속성일 뿐입니다.

이름이 지정된 개체의 속성

var test = {
 'case': 'I am a keyword, so I must be notated as a string',
 delete: 'I am a keyword, so me too' // raises SyntaxError
};
로그인 후 복사

객체 속성의 이름은 일반 문자나 문자열을 사용하여 지정할 수 있습니다. 또한 Javascript 파서 설계의 버그로 인해 위 예제의 두 번째 표현은 ECMAScript 5에서 오류를 발생시킵니다.
오류가 발생하는 이유는 delete가 키워드이기 때문에 이전 버전의 Javascript 파서에 맞게 문자열 상수를 사용하여 이름을 지정해야 하기 때문입니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!