在
Javascript中,使用a.b(c)或[a.b] [0](c)的原因是在执行a.b的代码期间将其绑定到对象a或不是.
遵循相同的推理使用
var z = Math.cos; console.log(z(1));
理论上可能与console.log(Math.cos(1))不同,但在实践中似乎并非如此.
问题是:标准是否保证对于预定义对象(如Math,Symbol或Object),此上下文在兼容实现中无关紧要?
使用Math,这个问题看起来很愚蠢,因为显然没有理由依赖于上下文…但是例如对于Symbol.因为假设一个实现可以将全局符号表存储在一个对象成员中并且在这种情况下使用[ Symbol.for] [0](“x”)不起作用.
Symbol.for确实在节点,chrome和firefox中没有上下文的情况下工作得很好,但我想知道这是保证还是偶然……