Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有任何方法可以更改这两种分配方法的优先级?_Javascript - Fatal编程技术网

Javascript 是否有任何方法可以更改这两种分配方法的优先级?

Javascript 是否有任何方法可以更改这两种分配方法的优先级?,javascript,Javascript,这是一个面试问题,要求编写一个Man类,让以下代码可以正常运行: var me =new Man(); //method one: me.attr("fullname", "tom"); //method two: me.fullname = "jim"; console.info("my name is:" + me.attr("fullname")); /*------[result is]------ my name is:tom ------------------*/ 我的

这是一个面试问题,要求编写一个Man类,让以下代码可以正常运行:

var me =new  Man();

//method one:
me.attr("fullname", "tom");

//method two:
me.fullname = "jim";

console.info("my name is:" + me.attr("fullname"));

/*------[result is]------
my name is:tom
------------------*/
我的答案是:

var Man=function(){
};

Man.prototype.attr=function(attr,val){
    if(val){
        this[attr]=val;
    }
    else{
        return this[attr];
    }
}
我要运行的代码的结果是:

/*------[result is]------
my name is:jim
------------------*/

谁能帮我?谢谢

您可以制作第二本词典:

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 dictionary = {};

    this.attr = function(attr, val) {
        if(arguments.length > 1) {
            dictionary[attr] = val;
        } else {
            return dictionary[attr];
        }
    };
}
您可以使用封闭的fullname变量,并忽略除“fullname”之外的所有内容:


您还可以每次返回tom,或者假装所有属性都是全名,或者两者都是。你可以。你可以。你可以。实际上,可能性是无限的。

你可以制作第二本字典:

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 dictionary = {};

    this.attr = function(attr, val) {
        if(arguments.length > 1) {
            dictionary[attr] = val;
        } else {
            return dictionary[attr];
        }
    };
}
您可以使用封闭的fullname变量,并忽略除“fullname”之外的所有内容:


您还可以每次返回tom,或者假装所有属性都是全名,或者两者都是。你可以。你可以。你可以。实际上,可能性是无限的。

使用属性保存属性

var Man=function(){
  this.attributes = {};
};

Man.prototype.attr=function(attr,val){
    if(val){
        this.attributes[attr] = val;
    }
    else{
        return this.attributes[attr];
    }
}

使用属性保存属性

var Man=function(){
  this.attributes = {};
};

Man.prototype.attr=function(attr,val){
    if(val){
        this.attributes[attr] = val;
    }
    else{
        return this.attributes[attr];
    }
}