var Man=function(){ }; Man.prototype.attr=function(attr,val){ if(val){ this[attr]=val; } else{ return this[attr]; } }
上面是我的代码,下面是调用代码。
在调用的时候,有下面两种属性赋值方案:
var me =new Man(); //方案一: me.attr("fullname", "小明");
//方案二: me.fullname = "废柴"; console.info("我的名字是:" + me.attr("fullname")); /*------[期望的执行结果]------ 我的名字是:小明 ------------------*/
按目前的代码最后输出的是
/*------[执行结果]------ 我的名字是:废柴 ------------------*/
也就是说第二种方案赋值把第一种方案赋的值修改了,请问要如何修改我的代码呢?
方案一(推荐):
function Man() { this.dictionary = {}; } Man.prototype.attr = function(attr, val) { if(arguments.length > 1) { this.dictionary[attr] = val; } else { return this.dictionary[attr]; } };
方案二:
function Man() { var fullname; this.attr = function(attr, val) { if(attr === 'fullname') { if(arguments.length > 1) { fullname = val; } else { return fullname; } } }; }
if判断,哪个符合你的要求就调用哪个。