Movatterモバイル変換


[0]ホーム

URL:


  1. 給開發者的 Web 技術文件
  2. JavaScript
  3. JavaScript 參考文件
  4. Functions
  5. setter

此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。

View in EnglishAlways switch to English

setter

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

set 語法會在物件屬性被嘗試定義時,將其屬性綁定到要呼叫的函式內。

嘗試一下

const language = {  set current(name) {    this.log.push(name);  },  log: [],};language.current = "EN";language.current = "FA";console.log(language.log);// Expected output: Array ["EN", "FA"]

語法

{set prop(val) { . . . }}{set [expression](val) { . . . }}

參數

prop

要綁定到給定函式的屬性名。

val

變數別名,該變數擁有要被嘗試安插到prop 的數值。

expression

從 ECMAScript 2015 開始,可以使用計算屬性名(computed property name)表達式,綁定到給定函式。

描述

JavaScript 的 setter 能在嘗試修改指定屬性時,執行給定函式。Setter 最常用於和 getter 一同建立虛擬屬性(pseudo-property)。你不可能給同一個屬性賦予 setter 與實際值。

使用set 語法時,請注意以下情況:

delete 操作符可移除 setter。

示例

在物件初始器的新物件定義 setter

這裡會給物件language 定義稱為current 的虛擬屬性。在指派數值時log 會和該值一同更新:

js
var language = {  set current(name) {    this.log.push(name);  },  log: [],};language.current = "EN";console.log(language.log); // ['EN']language.current = "FA";console.log(language.log); // ['EN', 'FA']

請注意current is not defined and any attempts to access it will result inundefined.

使用delete 操作符移除 setter

若想移除 setter 的話,可以直接使用delete

js
delete o.current;

針對已存在屬性的 setter 使用defineProperty

To append a setter to an existing object later at any time, useObject.defineProperty().

js
var o = { a: 0 };Object.defineProperty(o, "b", {  set: function (x) {    this.a = x / 2;  },});o.b = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' propertyconsole.log(o.a); // 5

使用計算屬性名

js
var expr = "foo";var obj = {  baz: "bar",  set [expr](v) {    this.baz = v;  },};console.log(obj.baz); // "bar"obj.foo = "baz"; // 跑 setterconsole.log(obj.baz); // "baz"

規範

Specification
ECMAScript® 2026 Language Specification
# sec-method-definitions

瀏覽器相容性

參見

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp