Mithril.js の gettersetter 関数が理解できないのですが…
返された関数が実行されると時は定義時の変数であるstoreを返します(getter)
・どの行が該当しているのでしょうか?
function gettersetter(store) {
function prop() {
if (arguments.length) store = arguments[0]
return store
}
prop.toJSON = function () {
if (store && isFunction(store.toJSON)) return store.toJSON()
return store
}
return prop
}
prop関数
if (arguments.length) store = arguments[0]
・「関数呼び出し時に渡された引数の数」があれば、「引数として渡されたstore」へ、1つめの引数を代入?
・どういう意味でしょうか?
・この部分がsetter?
prop.toJSON関数
・この関数はどこから呼ばれるているのでしょうか?
・storeがtrueで、store.toJSONが関数だったら、store.toJSON()を返す?
・それ以外なら、storeを返す?
prop.toJSON = function () {
if (store && isFunction(store.toJSON)) return store.toJSON()
return store
}
追記
・getterは下記ですか?
function prop() {
//if (arguments.length) store = arguments[0]
return store
}
・gettersetter関数を定義後「その戻り値である関数」を呼び出すということは、setterだろうがgetterrだろうが、実際はprop関数を呼び出しているだけ、ということでしょうか?
・prop.toJSON関数が呼び出されるのは、JSON.stringify から呼び出された時だけなので、上記処理とは全く関係ない、ということ?