ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。

JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。

青灯夜游
青灯夜游転載
2019-11-29 14:39:242765ブラウズ

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 以前ではサポートされていません:

##Internet ExplorerChromeサポート サポート##この記事は
FireFox Safari Opera

JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。 JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。 JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。 9.0 JavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。
#サポート
サポート
js チュートリアル# から引用しています。 ## コラム、学習へようこそ!

以上がJavaScript オブジェクト アクセサー (ゲッターとセッター) の詳細をご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。