WTK*_*WTK 10 javascript syntax google-plus-one
在调查google plusone脚本时,我多次看到以下语法:
(0, _.Em)();
Run Code Online (Sandbox Code Playgroud)
假设_.Em是一个函数,上面的语句将导致调用该函数,这是非常明显的.另一方面,如果它是未定义的,结果是否与简单的结果相同_.Em()?
任何人都可以了解使用这种语法背后的想法吗?
基本上,这种语法允许_.Em()在window对象的上下文中调用而不是_.
假设你有这个代码:
Foo = function() {
this.foo = "foo";
};
Foo.prototype.Em = function() {
alert(this.foo);
};
var _ = new Foo();
Run Code Online (Sandbox Code Playgroud)
发行_.Em()将导致在Em()上下文中被调用_.在函数内部,this关键字将引用_,因此foo将被打印.
发出(0, _.Em)()将方法调用与对象分离,并在全局上下文中执行调用.在函数内部,this关键字将引用window,因此undefined将被打印,因为window没有foo属性.
您可以测试这个小提琴中两种语法之间的区别.