ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。
JavaScript アクセサ (ゲッターとセッター)、ECMAScript 5 (2009) ではゲッターとセッターが導入されました。ゲッターとセッターを使用すると、オブジェクト アクセサー (計算されたプロパティ) を定義できます。
[関連コースの推奨事項: JavaScript ビデオ チュートリアル ]
JavaScript Getter (キーワードの取得)
<!DOCTYPE html> <html> <meta charset="utf-8"> <title>js</title> <body> <h2>JavaScript Getters和Setters</h2> <p> Getters和setter允许您通过方法获取和设置属性。</p> <p>此示例使用lang属性获取语言属性的值。</p> <p id="demo"></p> <script> // 新建一个对象。 var person = { firstName: "John", lastName : "Doe", language : "en", get lang() { return this.language; } }; // 使用getter显示来自对象的数据: document.getElementById("demo").innerHTML = person.lang; </script> </body> </html>
JavaScript Setter (キーワードの設定)
<!DOCTYPE html> <html> <meta charset="utf-8"> <title>JavaScript Getters和Setters</title> <body> <h2> JavaScript Getters和Setters </h2> <p> Getters和setter允许您通过方法获取和设置属性。</p> <p>此示例使用lang属性设置语言属性的值。</p> <p id="demo"></p> <script> // Create an object: var person = { firstName: "John", lastName : "Doe", language : "NO", set lang(value) { this.language = value; } }; // Set a property using set: person.lang = "en"; // Display data from the object: document.getElementById("demo").innerHTML = person.language; </script> </body> </html>
JavaScript 関数または Getter を使用しますか?
これら 2 つの例の違いは何ですか?
例 1:
var person = { firstName: "John", lastName : "Doe", fullName : function() { return this.firstName + " " + this.lastName; } }; // 使用方法显示对象的数据: document.getElementById("demo").innerHTML = person.fullName();
例 2:
var person = { firstName: "John", lastName : "Doe", get fullName() { return this.firstName + " " + this.lastName; } }; // 使用getter显示来自对象的数据: document.getElementById("demo").innerHTML = person.fullName;
例 1 fullName に関数としてアクセスします: person.fullName()。例 2 では、プロパティ person.fullName として fullName にアクセスします。 2 番目の例は、より単純な構文を提供します。
データ品質
JavaScript では、ゲッターとセッターを使用する際のデータ品質が向上します。 lang この例では、属性言語を使用して属性の値を大文字で返します:
// 创建一个对象: var person = { firstName: "John", lastName : "Doe", language : "en", get lang() { return this.language.toUpperCase(); } }; // 使用getter显示来自对象的数据: document.getElementById("demo").innerHTML = person.lang;
lang この例では、属性言語を使用して言語属性に大文字の値を格納します:
var person = { firstName: "John", lastName : "Doe", language : "", set lang(lang) { this.language = lang.toUpperCase(); } }; // 使用setter设置对象属性: person.lang = "en"; // 显示来自对象的数据: document.getElementById("demo").innerHTML = person.language;
Getter と Setter を使用する理由
#● より単純な構文を提供します#● プロパティとメソッドに同じ構文を使用できます
#● データ品質の向上を保証します#舞台裏で行うと便利です
<!DOCTYPE html> <html> <meta charset="utf-8"> <title>js</title> <body> <h2> JavaScript Getters和Setters </h2> <p>完美的创建反对象:</p> <p id="demo"></p> <script> var obj = { counter : 0, get reset() { this.counter = 0; }, get increment() { this.counter++; }, get decrement() { this.counter--; }, set add(value) { this.counter += value; }, set subtract(value) { this.counter -= value; } }; // Play with the counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; // Display the counter: document.getElementById("demo").innerHTML = obj.counter; </script> </body> </html>
Object.defineProperty()
Object.defineProperty() メソッドは、Getter と Setter の追加にも使用できます。
// 定义对象 var obj = {counter : 0}; // 定义 setters 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 the counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
ブラウザのサポート
Getter と Setter は Internet Explorer 8 以前ではサポートされていません:
FireFox | Safari | Opera | ||
---|---|---|---|---|
|
9.0 | |||
サポート | #サポート | サポート | ##この記事は | js チュートリアル# から引用しています。 ## コラム、学習へようこそ! |
以上がJavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。