首页 > 代码库 > get and set
get and set
1 (function () { 2 3 function Student(name, age, gender) { 4 this._name = name; 5 this._age = age; 6 this._gender = gender; 7 } 8 9 Object.defineProperty(Student.prototype, "name", {10 get: function () {11 return this._name;12 },13 set: function (value) {14 this._name = value;15 }16 });17 Object.defineProperty(Student.prototype, "age", {18 get: function () {19 return this._age;20 },21 set: function (value) {22 this._age = value;23 }24 });25 Object.defineProperty(Student.prototype, "gender", {26 get: function () {27 return this._gender;28 }29 });30 31 32 var stu = new Student("张三", 12, "男");33 console.log(stu.name);34 stu.age=13;35 console.log(stu.age);36 })();
在只提一下Object.defineProperty方法。
三个参数:目标对象,方法名,功能(get和set)
注意set只能接受一个数值。
今天偶然想到,set的一个巧用。用它可以代替形参,有时候。具体是不去写形参,而是在用它的时候去拿set去赋值。
代码进化:
1 (function () { 2 3 function Student(name, age, gender) { 4 this._name = name; 5 this._age = age; 6 this._gender = gender; 7 } 8 9 Object.defineProperties(Student.prototype, {10 name: {11 set: function (value) {12 this._name = value;13 },14 get: function () {15 return this._name;16 }17 },18 age: {19 set: function (value) {20 this._age = value;21 },22 get: function () {23 return this._age;24 }25 },26 gender: {27 get: function () {28 return this._gender;29 }30 }31 });32 33 function main() {34 var stu1 = new Student("Tom", 12, "boy");35 console.log(stu1.gender);36 }37 38 main();39 })();
这里用Object.defineProperties批量设置属性。注意格式就行。
代码装甲进化:
1 (function () { 2 3 function Student(name, age, gender) { 4 return { 5 _name: name, 6 _age: age, 7 _gender: gender, 8 get name() { 9 return this._name;10 },11 set name(value) {12 this._name=value;13 },14 get age(){15 return this._age;16 },17 set age(value){18 this._age=value;19 },20 get gender(){21 this._gender=gender;22 }23 };24 25 }26 27 var stu1=new Student("Tom",12,"female");28 console.log(stu1.name);29 })();
这样可以把get和set写在内部。同样注意格式。
get and set
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。