Javascript 是否有任何方法可以更改这两种分配方法的优先级?
这是一个面试问题,要求编写一个Man类,让以下代码可以正常运行: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 ------------------*/ 我的
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];
}
}