光之远征团跨服战

详解JavaScript的get和set方法

一、get 方法1、功能get 关键字将对象属性与函数进行绑定,当属性被访问时,对应函数被执行。

代码语言:txt复制// 语法一

{get prop() { ... } }

// 语法二

{get [expression]() { ... } }2、实例:语法一代码语言:txt复制const obj = {

log: ['example','test'],

get latest() {

if (this.log.length == 0) return undefined;

return this.log[this.log.length - 1];

}

}

console.log(obj.latest);

// 输出:"test".3、实例:语法二使用表达式作为属性名。

代码语言:txt复制var expr = 'foo';

var obj = {

get [expr]() { return 'bar'; }

};

console.log(obj.foo);

// 输出:bar4、动态新增 get 属性代码语言:txt复制var o = { a:0 }

Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });

console.log(o.b)

// 输出:15、删除 get 属性代码语言:txt复制const obj = {

log: ['example','test'],

get latest() {

if (this.log.length == 0) return undefined;

return this.log[this.log.length - 1];

}

}

delete obj.latest;

console.log(obj);二、set 方法1、功能set 关键字将对象属性与函数进行绑定,当改变属性值时,对应函数被执行。

代码语言:txt复制// 语法一

{set prop(val) { . . . }}

// 语法二

{set [expression](val) { . . . }}2、实例:语法一代码语言:txt复制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"]3、实例:语法二使用表达式作为属性名。

代码语言:txt复制const expr = "foo";

const obj = {

baz: "bar",

set [expr](v) { this.baz = v; }

};

console.log(obj.baz); // "bar"

obj.foo = "change"; // run the setter

console.log(obj.baz); // "change"4、动态新增 set 属性代码语言:txt复制const language = {

log: []

};

// 1、新增 set

Object.defineProperty(language, "calc", { set: function (x) { this.a = x / 2; } });

language.calc = 5;

console.log(language.a);

// 输出:2.55、删除 set 属性代码语言:txt复制const language = {

set current(name) {

this.log.push(name);

},

log: []

};

language.current = 'EN';

language.current = 'FA';

// 删除 set

delete language.current;

console.log(language)三、参考方法详解JavaScript的get和set方法

东方福利网 上海
支持手柄游戏有哪些 十大经典支持手柄游戏排行


最新发表

友情链接