プロパティが参照する関数内で、ハードコーディングせずにそのプロパティ名から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
プロパティが他の値に設定されていても (追加の参照が存在し続ける限り)、関数は存在し続けます。