您现在的位置是:首页 > Javascript
当前栏目
详解JavaScript的get和set方法
2023-04-18 16:06:02 时间
一、get 方法
1、功能
get
关键字将对象属性与函数进行绑定,当属性被访问时,对应函数被执行。
// 语法一
{get prop() { ... } }
// 语法二
{get [expression]() { ... } }
2、实例:语法一
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、实例:语法二
使用表达式作为属性名。
var expr = 'foo';
var obj = {
get [expr]() { return 'bar'; }
};
console.log(obj.foo);
// 输出:bar
4、动态新增 get 属性
var o = { a:0 }
Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });
console.log(o.b)
// 输出:1
5、删除 get 属性
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
关键字将对象属性与函数进行绑定,当改变属性值时,对应函数被执行。
// 语法一
{set prop(val) { . . . }}
// 语法二
{set [expression](val) { . . . }}
2、实例:语法一
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、实例:语法二
使用表达式作为属性名。
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 属性
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
5、删除 set 属性
const language = {
set current(name) {
this.log.push(name);
},
log: []
};
language.current = 'EN';
language.current = 'FA';
// 删除 set
delete language.current;
console.log(language)
三、参考方法
相关文章
- 前端面试 【JavaScript】— typeof 是否能正确判断类型?
- 前端面试 【JavaScript】— instanceof 能否判断基本数据类型?
- 前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?
- 前端面试 【JavaScript】— Object.is和=== 有什么区别?
- 前端面试 【JavaScript】— JS中类型转换有哪几种?
- 前端面试 【JavaScript】— == 和 ===有什么区别?
- 前端面试 【JavaScript】— 对象转原始类型是根据什么流程运行的?
- JavaScript 的 parseInt() 函数
- javascript实现两个数字进行组合
- JS监听键盘按键
- 大前端开发中的路由管理之五:Flutter篇
- Javascript的DOM操作
- 在Vue项目中使用WebSocket技术
- 新手向:前端程序员必学基本技能——调试JS代码
- React 毁了 Web 开发!
- 「JS 逆向百例」cnki 学术翻译 AES 加密分析
- 商标注册域名后缀用什么?商标和域名有哪些区别?
- 网站建设流程是怎样的?需要看重哪些细节?
- 网站域名商标注册流程是什么?网站域名商标有什么用?
- 如何建设一个实用性强的网站 网站上线后如何运营