【发布时间】:2014-09-01 16:31:32
【问题描述】:
var obj = {};
var r1 = (obj['toString'])();
var m1 = obj['toString'];
var r2 = m1();
var r3 = (obj.toString)();
var m2 = obj.toString;
var r4 = m2();
r1 和 r3 预期包含正确的结果:"[object Object]",而 r2 和 r4 包含 "[object Undefined]",表明 m1 和 m2 未绑定到对象。
我无法完全理解obj['toString']() 是如何执行的。我总是这样看,(obj['toString'])() -> (function obj)()。结果是函数调用运算符回顾了上下文是什么。我希望操作员不知道操作数来自哪里。
谁能正确解释这种行为?
【问题讨论】:
-
r2和r4是使用具有this等于执行({}).toString.call(undefined);的函数生成的 -
@PaulS。是的,我试图指出这一点,但问题是为什么。
标签: javascript oop