javascript的getter和setter
先看以下代码:
function Field(val){ this.value = val; } var field = new Field("test"); field.value="test2"; console.log(field.value); //这是输出语句
function Field(val){ this.value = val; } Field.prototype = { get value(){ return this._value + 1; }, set value(val){ this._value = val + ‘ again‘; } }; var field = new Field("test"); field.value="test2"; console.log(field.value);
var Field = { // 1行 get value() { // 2行 return 1; // 3行 }, // 4行 get value2() { // 5行 return 2; // 6行 } // 7行 }; // 8行 // 9行 console.log(Field.value); // 10行 console.log(Field.value2); // 11行
var Field = function() { }; Field.prototype = { get value() { return 1; }, get value2() { return 2; } }; var field = new Field(); console.log(field.value); console.log(field.value2);
var Exp = function() { // 无任何成员变量 }; var exp = new Exp(); exp.a = 1;
这样,exp.a就直接可以用了。以这特性,再回过头来看看代码③的10行,11行。
重头戏:了解了js的getter,setter 那么来看下getter独特的用法,和代码③的用法一样。看如下代码:
var Numeric = { //这儿定义了一个json对象(这个对象只是用来存静态数据的) get equip() { return { //这里注意,这儿又返回了一个json对象 get normalEquip() { return 1; }, // 逗号,要注意 get fashionEquip() { return 2; } }; },// 同样逗号 get weapon() { return 11; } }; var Test = function() { //这儿声明了一个Test实例 this.equipType = 1; this.weaponType = 11; }; var pro = Test.prototype; pro.show = function() { //注意以下的判断及用法 if(this.equipType == Numeric.equip.normalEquip) { console.log(‘is normalEquip‘); }else if(this.equipType == Numeric.equip.fashionEquip) { console.log(‘is fashionEquip‘); } if(this.weaponType == Numeric.weapon) { console.log(‘is Weapon!‘) } }; var myTest = new Test(); //创建Test实例 myTest.show(); //执行
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。