それを行う関数を定義できます。ただし、MYOBJECT
直接割り当てる必要はありません。
MYOBJECT.otherMethod = otherMethod;
function otherMethod(needThis){
return needThis;
}
関数は JavaScript の第一級オブジェクトであり、他のオブジェクトと同じようにそれらへの参照を渡すことができます。また、プロパティに値を割り当てるだけで、いつでも JavaScript オブジェクトに新しいプロパティを作成できます。
そのための関数を定義したい場合、関数は関数とオブジェクトに付けたい名前の両方を受け入れる必要があります。これは次のようになります。
var MYOBJECT = {
// ...
addMethodToObject: function(name, func) {
this[name] = func;
}
};
これは、プロパティと関数が同じ名前でなければならない理由がなく、関数インスタンスから関数の名前を取得する標準的な方法がないためです。(非標準の方法がいくつかありますが、標準で定義されているものはありません。)
そこで使用した構文はなじみがないかもしれません。JavaScript では、プロパティにアクセスする方法が2 つあります。リテラル名を使用するドット表記と、文字列を使用する括弧付き表記です。例は、それを示す最も明確な方法です。
var obj = {};
obj.foo = 42; // Dotted notation with a literal name `foo`
obj["foo"] = 42; // Exactly the same thing, using bracketed notation and a string
var s = "foo";
obj[s] = 42; // Again the same, because the string doesn't have to be a literal
...これが機能する理由this[name] = func;
です。name
追加するプロパティの文字列名です。