JS では、次のように関数内に関数を作成できることが知られています。
function digit() { return 9 };
digit.five = function() { return 5 };
digit(); // 9
digit.five() // 5
それが悪い慣習であるかどうかはわかりません (おそらくそうです)。適切に機能するので、使用してもかまいません。
しかしdigit()
、あるオブジェクトのメソッドとして関数があるとしたらどうでしょうか (以下の例を参照)。
では、どのように宣言しdigit.five()
ますか? のスコープで宣言したいとしますobj
。
var obj = {
digit: function() { return 9 },
// digit.five: … ???
// digit["five"]: … ???
}
obj.digit(); // 9
obj.digit.five() // 5
obj.digitFive()
新しいメソッドを作成せずにそれはまったく可能ですか?
PS: ユーザーnnnnnn は、 内に属性を作成できると言っています :obj.digit()
var obj = {
digit: function () {
return 9;
obj.digit.five = function () { return 5 };
}
}
これが唯一の方法ですか?