如果您的意思是在home
属性引用的函数中,您希望能够以某种方式"home"
从该属性名称中获取字符串而无需对其进行硬编码,那么不,据我所知,这是不可能的。
只是猜测您要达到的目标,这样的事情至少会有所帮助:
function callHome(propName) {
return function(options) {
this._home(propName, options);
}
}
var someObj = {
home: callHome('home'),
login: callHome('login')
}
someObj.home({some:"option"});
至少你不必为每个属性重复相同的函数体。演示:http: //jsfiddle.net/EeEAw/
注意:我假设_home()
问题中调用但未定义的函数将在实际代码中的某处定义。我没有在我的答案中显示它,尽管我在我的小提琴中创建了一个虚拟的。
顺便说一句,请注意该函数并不真正“属于”对象或属性 - 没有什么能阻止你做这种事情:
var obj = {
test : "test",
home : function() {
alert(this.test);
}
};
var funcRef = obj.home;
var obj2 = {
method1 : funcRef
}
obj.home = null;
funcRef();
obj2.method1();
也就是说,您可以创建对同一个函数的多个引用,即使原始obj.home
属性设置为其他值,该函数仍将继续存在(只要附加引用继续存在)。