首页新闻找找看学习计划

请问是否有方法改变两种赋值方法的优先级?

0
[已解决问题] 解决于 2012-07-06 13:43
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")); /*------[期望的执行结果]------ 我的名字是:小明 ------------------*/

按目前的代码最后输出的是

/*------[执行结果]------
我的名字是:废柴
------------------*/

也就是说第二种方案赋值把第一种方案赋的值修改了,请问要如何修改我的代码呢?

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-07-05 08:23
< >
分享
最佳答案
0

方案一(推荐):

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;
            }
        }
    };
}
奖励园豆:5
artwl | 专家六级 |园豆:16526 | 2012-07-05 11:47
其他回答(1)
0

if判断,哪个符合你的要求就调用哪个。

梦里寻人 | 园豆:11377 (专家六级) | 2012-07-05 10:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册