======Javascript Objects====== * description : Javascript Object Accessors * author : 오션 * email : shlim@repia.com * lastupdate : 2021-05-03 \\ =====The source of this article===== [[https://www.w3schools.com/js/js_object_accessors.asp|Javascript Object Accessors]] \\ =====JavaScript Accessors (Getters and Setters)===== %%ECMAScript%% 5 (2009)는 %%Getter%% 및 %%Setters%%를 도입했습니다.\\ \\ %%Getter%% 및 %%Setter%%를 사용하면 오브젝트 접근자(계산된 프로퍼티)를 정의할 수 있습니다.\\ \\ =====JavaScript Getter (The get Keyword)===== 다음 예제에서는 ''lang'' 속성을 사용하여 ''language'' 프로퍼티의 값을 가져옵니다(''get'').\\ ====Example==== // Create an object let person = { firstName: "John", lastName: "Doe", language: "en", get lang() { return this.language; } }; // Display data from the object using a getter: document.getElementById("demo").innerHTML = person.lang; // en \\ =====JavaScript Setter (The set Keyword)===== 다음 예제에서는 ''lang'' 속성을 사용하여 ''language'' 프로퍼티의 값을 설정합니다('' set'').\\ ====Example==== // Create an obejct let person = { firstName: "John", lastName: "Doe", language: "No", set lang(value) { this.language = value; } }; console.log(person); // {firstName: "John", lastName: "Doe", language: "No"} // Set a property using set: person.lang = "French"; // Display data from the object: document.getElementById("demo").innerHTML = person.language; // French console.log(person); // {firstName: "John", lastName: "Doe", language: "French"} \\ =====JavaScript Function or Getter?===== 다음 2 예제의 차이점은 무엇입니까?\\ ====Example 1==== // Create an object; let person = { firstName: "Emile", lastName: "Darwin", fullName: function () { return this.firstName + " " + this.lastName; } }; // Display data from the object using a method; document.getElementById("demo").innerHTML = person.fullName(); // Emile Darwin \\ ====Example 2==== // Create an object; let person = { firstName: "Emile", lastName: "Darwin", get fullName() { return this.firstName + " " + this.lastName; } }; // Display data from the object using a getter; document.getElementById("demo").innerHTML = person.fullName; // Emile Darwin \\ Example 1은 함수: %%person.fullName()%%로 fullName에 액세스합니다.\\ \\ Example 2는 프로퍼티: %%person.fullName%%로 fullName에 액세스합니다.\\ \\ 두 번째 예제는 더 간단한 구문을 제공합니다.\\ \\ =====Data Quality===== %%JavaScript%%는 %%getter%% 및 %%setter%%를 사용할 때 더 좋은 데이터 품질을 보장할 수 있습니다.\\ \\ 다음 예제에서, ''lang'' 프로퍼티를 사용하면 대문자로 ''language'' 프로퍼티 값을 반환합니다.\\ ====Example==== // Create an object: let person = { firstName: "Elizabeth", lastName: "Taylor", language: "en", get lang() { return this.language.toUpperCase(); } }; // Display dafta from the object using a getter: document.getElementById("demo").innerHTML = person.lang; // EN \\ 다음 예제에서는 ''lang'' 프로퍼티를 사용하여 ''language'' 속성에 대문자 값을 저장합니다.\\ ====Example==== // Create an object: let person = { firstName: "Elizabeth", lastName: "Taylor", language: "", set lang(lang) { this.language = lang.toUpperCase(); } }; // Set a property using set: person.lang = "en"; // Display data from the object: document.getElementById("demo").innerHTML = person.language; // EN \\ =====Why Using Getters and Setters?===== * 더 간단한 구문을 제공합니다. * 프로퍼티 및 메서드에 대해 동일한 구문을 허용합니다. * 더 좋은 데이터 품질을 확보할 수 있습니다. * behind-the-scenes에서 작업하는 데 유용합니다. =====Object.defineProperty()===== ''%%Object.defineProperty()%%'' 메서드를 사용하여 Getter 및 Setter를 추가할 수도 있습니다:\\ ====Example==== // Define an object let obj = { counter: 0 }; // Define Setters and Getters Object.defineProperty(obj, "reset", { get: function () { this.counter = 0; } }); Object.defineProperty(obj, "increment", { get: function () { this.counter++; } }); Object.defineProperty(obj, "decrement", { get: function () { this.counter--; } }); Object.defineProperty(obj, "add", { set: function (value) { this.counter += value; } }); Object.defineProperty(obj, "subtract", { set: function (value) { this.counter -= value; } }); // Play with counter: obj.reset; console.log(obj); // {counter: 0} obj.add = 5; console.log(obj); // {counter: 5} obj.subtract = 1; console.log(obj); // {counter: 4} obj.increment; console.log(obj); // {counter: 5} obj.decrement; console.log(obj); // {counter: 4} document.getElementById("demo").innerHTML = obj.counter; // 4 {{tag>오션 Javascript Objects Accessors}}