get and set
2024-09-29 17:31:11
(function () { function Student(name, age, gender) {
this._name = name;
this._age = age;
this._gender = gender;
} Object.defineProperty(Student.prototype, "name", {
get: function () {
return this._name;
},
set: function (value) {
this._name = value;
}
});
Object.defineProperty(Student.prototype, "age", {
get: function () {
return this._age;
},
set: function (value) {
this._age = value;
}
});
Object.defineProperty(Student.prototype, "gender", {
get: function () {
return this._gender;
}
}); var stu = new Student("张三", 12, "男");
console.log(stu.name);
stu.age=13;
console.log(stu.age);
})();
在只提一下Object.defineProperty方法。
三个参数:目标对象,方法名,功能(get和set)
注意set只能接受一个数值。
今天偶然想到,set的一个巧用。用它可以代替形参,有时候。具体是不去写形参,而是在用它的时候去拿set去赋值。
代码进化:
(function () { function Student(name, age, gender) {
this._name = name;
this._age = age;
this._gender = gender;
} Object.defineProperties(Student.prototype, {
name: {
set: function (value) {
this._name = value;
},
get: function () {
return this._name;
}
},
age: {
set: function (value) {
this._age = value;
},
get: function () {
return this._age;
}
},
gender: {
get: function () {
return this._gender;
}
}
}); function main() {
var stu1 = new Student("Tom", 12, "boy");
console.log(stu1.gender);
} main();
})();
这里用Object.defineProperties批量设置属性。注意格式就行。
代码装甲进化:
(function () { function Student(name, age, gender) {
return {
_name: name,
_age: age,
_gender: gender,
get name() {
return this._name;
},
set name(value) {
this._name=value;
},
get age(){
return this._age;
},
set age(value){
this._age=value;
},
get gender(){
this._gender=gender;
}
}; } var stu1=new Student("Tom",12,"female");
console.log(stu1.name);
})();
这样可以把get和set写在内部。同样注意格式。
最新文章
- web端功能测试总结(一)
- BZOJ1082: [SCOI2005]栅栏 题解
- git源码中的Makefile
- javascript 学习笔记之模块化编程
- 基于Html5的兼容所有主流浏览器的在线视频播放器videoJs
- ExtJs4 笔记(9) Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件
- 【 D3.js 高级系列 — 8.0 】 打标
- Mysql re-set password, mysql set encode utf8 mysql重置密码,mysql设置存储编码格式
- VS2010 boost 使用问题一例
- KVM设置DHCP、DNS、Gateway
- float的精度,3个小数相加后精度丢失--小数比较使用bccomp()方法
- [原创] web_custom_request 与 Viewstate
- 利用win10自带的系统配置禁止开机启动项和程序
- 前端之旅HTML与CSS篇之清除浮动塌陷
- jdk源码阅读笔记-Integer
- 你可能需要为你的 APP 适配 iOS 11
- Mybatis框架基础支持层——解析器模块(2)
- 关于无限试用JetBrains产品的方案
- 20172301 《Java软件结构与数据结构》实验三报告
- Python自动化之django orm之Q对象