您的位置:首页 > 其它

get and set

2016-08-26 19:14 176 查看
(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写在内部。同样注意格式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: