get and set
(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写在内部。同样注意格式。
随机推荐
- PAT 1055. 集体照 (25)
拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下: 每排人数为N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任何人矮: 每排中最高者站中间(中间位置为m ...
- sublime 快捷键,左菜单乱码
sublime 快捷键安装 packagecontrol https://packagecontrol.io/installation#st3 import urllib.request,os,has ...
- linux系统环境下搭建coreseek(+mmseg3) (good)
1.下载并解压coreseek软件,操作命令如下: wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz 说明:文件下 ...
- ACN经典例题1
1.韩信点兵 描述相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了.输入3个非负整数a,b,c ,表示每种 ...
- 事件监听机制——列出指定目录内容、添加Dialog对话框
事件监听机制理解与Dialog练习 利用Java语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
- Python 3 常用模块之 一
Python 3 模块 一. time模块 时间模块 在Python中,通常有这几种方式来表示时间: 1.1 时间戳(timestamp): 通常来说,时间戳表示的是从1970年1月1日00:00: ...
- 机器学习相关知识整理系列之一:决策树算法原理及剪枝(ID3,C4.5,CART)
决策树是一种基本的分类与回归方法.分类决策树是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成.结点由两种类型,内部结点表示一个特征或属性,叶结点表示一个类. 1. 基础知识 熵 在信息学和 ...
- svn及git使用笔记
这周发生好几件大事: 谷歌发布SHA-1安全加密碰撞实例 Cloudflare 泄露网络会话中的加密数据 linux内核漏洞 CVE-2017-6074 加密在网络中越来越受关注,目前github的提 ...
- java入门了解15
1.批处理文件(bat) 简单的说,批处理的作用就是自动的连续执行多条命令 .编写bat处理文件可以使用记事本的方式: 常见批处理文件的命令: echo 表示显示此命令后的字符 tiltle 设置窗口 ...
- 查询速度优化用not EXISTS 代替 not in
1,not in 速度奇慢,要用 not EXISTS ,速度奇快! 大表效果尤其明显 sql中exists,not exists的用法 exists()后面的子查询被称做相关子查询,他是不返回列表的 ...