猿问

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

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")); /*------[期望的执行结果]------ 我的名字是:小明 ------------------*/

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

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

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

哆啦的时光机
浏览 487回答 2
2回答

交互式爱情

方案一(推荐): 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; } } }; }

慕码人2483693

if判断,哪个符合你的要求就调用哪个。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答