(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写在内部。同样注意格式。

最新文章

  1. web端功能测试总结(一)
  2. BZOJ1082: [SCOI2005]栅栏 题解
  3. git源码中的Makefile
  4. javascript 学习笔记之模块化编程
  5. 基于Html5的兼容所有主流浏览器的在线视频播放器videoJs
  6. ExtJs4 笔记(9) Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件
  7. 【 D3.js 高级系列 — 8.0 】 打标
  8. Mysql re-set password, mysql set encode utf8 mysql重置密码,mysql设置存储编码格式
  9. VS2010 boost 使用问题一例
  10. KVM设置DHCP、DNS、Gateway
  11. float的精度,3个小数相加后精度丢失--小数比较使用bccomp()方法
  12. [原创] web_custom_request 与 Viewstate
  13. 利用win10自带的系统配置禁止开机启动项和程序
  14. 前端之旅HTML与CSS篇之清除浮动塌陷
  15. jdk源码阅读笔记-Integer
  16. 你可能需要为你的 APP 适配 iOS 11
  17. Mybatis框架基础支持层——解析器模块(2)
  18. 关于无限试用JetBrains产品的方案
  19. 20172301 《Java软件结构与数据结构》实验三报告
  20. Python自动化之django orm之Q对象

热门文章

  1. 如何将gedit变成c++编译器
  2. linux c编程:线程退出
  3. ABAP OO 开发语法整理
  4. linux 基础-变量,shell基本语法
  5. 淘宝开源平台(taobao-code)使用
  6. linux清空屏幕
  7. deviceToken的获取(二)
  8. 每天一个Linux命令(18)loacte命令
  9. 英语发音规则---ir字母组合发音规律
  10. Php处理大文件-分割和合并