我刚刚在Knockout的源代码中找到以下内容:
target.subscribe = target['subscribe'] = function …
为什么他们将函数分配给同一属性两次?唯一的区别是他们访问它的方式。据我所知,这不应该对给定的属性名称(JavaScript property access: dot notation vs. brackets?)产生影响。
答案 0 :(得分:4)
这可能是为了防止代码缩小时出现问题。
target.subscribe
可以缩小为类似target.a
的内容,但可能会有依赖target.subscribe
依赖的代码。例如,您可能有:
var x = 'subscribe';
target[x](something);
分配给两者将允许缩小器完成其工作,而不会破坏对表达式访问的支持。