데이터 유형의 개체
속성 액세스
속성 삭제
속성 이름 구문
객체 사용법 및 속성
JavaScript의 모든 변수는 null과 두 가지 예외를 제외하고 객체로 사용될 수 있습니다. 한정되지 않은 .
false.toString(); // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} Foo.bar = 1; Foo.bar; // 1
일반적인 오해는 숫자 리터럴을 객체로 사용할 수 없다는 것입니다. 이는 도트 연산자를 부동 소수점 리터럴 값의 일부로 구문 분석하려고 시도하는 JavaScript 파서의 버그 때문입니다.
2.toString(); // 出错:SyntaxError
숫자 리터럴을 객체처럼 보이게 만드는 해결 방법은 많습니다.
2..toString(); // 第二个点号可以正常解析 2 .toString(); // 注意点号前面的空格 (2).toString(); // 2先被计
데이터 유형으로서의 개체
JavaScript 개체는 해시 테이블로 사용할 수 있으며 주로 명명된 키와 값 간의 해당 관계를 저장하는 데 사용됩니다.
객체 리터럴 구문({})을 사용하여 간단한 객체를 생성할 수 있습니다. 새로 생성된 이 객체는 Object.prototype에서 상속되며 사용자 정의 속성이 없습니다.
var foo = {}; // 一个空对象 // 一个新对象,拥有一个值为12的自定义属性'test' var bar = {test: 12};
속성 액세스
객체의 속성에 액세스하는 방법에는 점 연산자 또는 대괄호 연산자의 두 가지가 있습니다.
var foo = {name: 'kitten'} foo.name; // kitten foo['name']; // kitten var get = 'name'; foo[get]; // kitten foo.1234; // SyntaxError foo['1234']; // works
두 구문은 동일하지만 대괄호 연산자는 다음 두 상황에서 여전히 유효합니다.
속성의 동적 설정
속성 이름이 유효한 변수 이름이 아닙니다(번역자 참고 사항: 예를 들어 속성 이름에 공백이 포함되어 있거나 속성 이름이 JS 키워드인 경우)
속성 삭제
속성을 삭제하는 유일한 방법은 삭제 연산자를 사용하는 것입니다. 속성을 정의되지 않음 또는 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 test = { 'case': 'I am a keyword so I must be notated as a string', delete: 'I am a keyword too so me' // 出错:SyntaxError };
객체의 속성 이름은 문자열이나 일반 문자를 사용하여 선언할 수 있습니다. 그러나 JavaScript 파서의 또 다른 잘못된 설계로 인해 위의 두 번째 선언 방법은 ECMAScript 5 이전에 SyntaxError를 발생시킵니다.
이 오류가 발생하는 이유는 삭제가 JavaScript 언어의 키워드이기 때문입니다. 따라서 하위 버전의 JavaScript 엔진에서 정상적으로 실행하려면 문자열 리터럴 선언을 사용해야 합니다.
위는 JavaScript 고급 시리즈 - 객체 사용법 및 속성입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!