get
关键字将对象属性与函数进行绑定,当属性被访问时,对应函数被执行。
// 语法一
{get prop() { ... } }
// 语法二
{get [expression]() { ... } }
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".
使用表达式作为属性名。
var expr = 'foo';
var obj = {
get [expr]() { return 'bar'; }
};
console.log(obj.foo);
// 输出:bar
var o = { a:0 }
Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });
console.log(o.b)
// 输出:1
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
关键字将对象属性与函数进行绑定,当改变属性值时,对应函数被执行。
// 语法一
{set prop(val) { . . . }}
// 语法二
{set [expression](val) { . . . }}
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"]
使用表达式作为属性名。
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"
const language = {
log: []
};
// 1、新增 set
Object.defineProperty(language, "calc", { set: function (x) { this.a = x / 2; } });
language.calc = 5;
console.log(language.a);
// 输出:2.5
const language = {
set current(name) {
this.log.push(name);
},
log: []
};
language.current = 'EN';
language.current = 'FA';
// 删除 set
delete language.current;
console.log(language)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。