为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哆啦的时光机 2018-12-07 05:53:42
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")); /*------[期望的执行结果]------ 我的名字是:小明 ------------------*/ 按目前的代码最后输出的是 /*------[执行结果]------ 我的名字是:废柴 ------------------*/ 也就是说第二种方案赋值把第一种方案赋的值修改了,请问要如何修改我的代码呢?
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

方案一(推荐):

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;
            }
        }
    };
}
查看完整回答
反对 回复 2018-12-24
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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

查看完整回答
反对 回复 2018-12-24
  • 2 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信