JavaScript 고급 시리즈 - 개체 사용법 및 속성

黄舟
풀어 주다: 2017-02-07 17:22:42
원래의
1142명이 탐색했습니다.
  • 데이터 유형의 개체

  • 속성 액세스

  • 속성 삭제

  • 속성 이름 구문

객체 사용법 및 속성

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)를 참고해주세요!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿