オブジェクト範囲の
20718 ワード
対象とは?
var person = {
// 프로퍼티 (키: 값)
name: 'Lee',
age: 20
};
オブジェクトの作成(オブジェクト文字)
{}
には0個以上のpropertyが定義されているvar person = {
name: 'Lee',
sayHello: function() {
console.log(`Hello! My name is ${this.name}.`);
}
};
console.log(typeof person); // object
console.log(person); // {name: 'Lee', sayHello: f}
保証する
非=>値をキーとして使用すると、暗黙的に文字列
var person = {
// 식별자 네이밍 규칙 준수 O
firstName: 'Na-na',
// 식별자 네이밍 규칙 준수 X
last-name: 'Lee' // SyntaxError: Unexpected token -
// 따옴표로 묶어줘야 한다.
'last-name': 'Lee'
};
文字列式を使用してpropertyキーを動的に生成できます.この場合、propertyキーとして使用される式は、四角カッコ
[]
に囲まれる必要があります.var obj = {};
var key = 'hello';
obj[key] ='world';
console.log(obj); // {hello: "world"}
既存のpropertyキーを繰り返し宣言すると、最初に宣言したpropertyが上書きされます.エラーは発生しません.
var foo = {
name: 'Lee',
name: 'Kim'
};
console.log(foo); // {name: "Kim"}
方法
JavaScriptの関数は1レベルのオブジェクトであるため、値としてもpropertyの値としても使用できます.
property値が関数である場合、通常の関数を区別するためのメソッドと呼ばれます.
すなわち,メソッドとはオブジェクトにバンドルされた関数を指す.
var circle = {
radius: 5,
// 메소드
getDiameter: function() {
return 2 * this.radius; // this => circle을 가리킨다.
}
};
console.log(circle.getDiameter()); // 10
メソッドの内部で使用されるthisは、オブジェクト自体を指します.特許アクセス
var person = {
name: 'Lee'
};
// 마침표 표기법 사용
console.log(person.name); // Lee
// 대괄호 표기법 사용
console.log(person['name']); // Lee
console.log(person[name]); // ReferenceError: name is not defined
角カッコを使用する場合は、指定したpropertyキーは引用符で囲まれた文字列でなければなりません.そうでない場合、javascriptエンジンは識別子として解釈され、参照エラーが発生する可能性があります.
アクセスオブジェクトに存在しないPropertyの場合はundefinedを返します.
var person = {
name: 'Lee'
};
console.log(person.age); // undefined
プロパティ値の更新
var person = {
name: 'Lee'
};
person.name = 'Kim'; // 갱신
console.log(person) // {name: "Kim"}
Property動的作成
var person = {
name: 'Lee'
};
person.age = 20;
console.log(person); // {name: "Lee", age: 20}
プロパティの削除
var person = {
name: 'Lee'
};
delete person.name; // 삭제
console.log(person); // {}
オブジェクト文字の拡張(ES 6)
Propertyサムネイル表示
変数を
var x = 1, y = 2;
var obj = {
x: x,
y: y
};
// 프로퍼티 축약 표현
var obj = {
x,
y
};
計算された構成名
文字列式を使用してpropertyキーを動的に生成することもできます.
この場合、propertyキーとして使用される式は、括弧
[]
に囲まれる必要があります.var prefix = 'prop';
var i = 0;
var obj = {};
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}
var prefix = 'prop';
var i = 0;
var obj = {
[`${prefix}-${++i}`] = i;
[`${prefix}-${++i}`] = i;
[`${prefix}-${++i}`] = i;
};
console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}
メソッド簡略表示
function
キーワード// ES5
var obj = {
name: 'Lee',
sayHi: function() {
console.log('hi! ' + this.name);
}
};
// 메소드 축약 표현
var obj = {
name: 'Lee',
sayHi() {
console.log('hi! ' + this.name);
}
};
メソッドサムネイル定義のメソッドは、Propertyに割り当てられた関数とは異なります.Reference
この問題について(オブジェクト範囲の), 我々は、より多くの情報をここで見つけました https://velog.io/@cheej10/객체-리터럴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol