在看 backbone 的 todos 例子时,有一行代码,如下:
this.without.apply(this, this.done());
一开始怎么也不理解这句话的含义。后来看了一些网上的解释,还是半懂不懂的。今天再次看到它的时候,把JAVA里的反射跟它联系了一下,感觉有点像,然后,再回过头去看看网上的那些解释,感觉有点懂了。
如果把上面一句写成下面这个样子的话,可能更好理解一些:
this.without(this.done())
其中,第一个this就相当于上面apply函数中的第一个参数。
有人可能会问,既然可以写成下面这个样子,那为什么还要写成上面那个?请看下面这行代码:
ClassA.without.apply(ClassB, ClassB.done());
这下看明白了吧,without 这个方法可能是定义在别的类中的,所以无法通过 ClassB.without()来引用。