私はオブジェクトがあるとします。`this`がここo`(o.method)`を意味しないのはなぜ()の代わりにグローバルオブジェクトの
var o = {
prop: 3,
method: function() {return this.prop}
}
私はこの
(o.method)()
を期待していましたundefined
を返しますが、3
を返して、this
をo
method
に設定します。それはなぜそうですか? (o.method)
を別々に評価すると、スタンドアロン関数と評価されるため、this
はグローバルオブジェクトを参照すると予想されました。なぜ、例えば、違いがここに存在します:
(o.method)() vs (o.method || true)()
私はo.method()
質問はこの(o.method)
のように最初の関数にアクセスし、それを呼び出すことについて、具体的で、コンテキストとしてo
を使用することを知っています。
'o.method()'は 'method.call(o);'のショートカットです。これは役に立ちますか? – freakish
また、試してみてください: 'var a = {prop: 'foo'、fn:o.method}; 'this'は関数が呼び出されるオブジェクトになります) – njzk2