javascript – 使用这样的语法(0,_.Em)()的原因是什么?

前端之家收集整理的这篇文章主要介绍了javascript – 使用这样的语法(0,_.Em)()的原因是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在调查google plusone脚本时,我已经看到以下语法多次:
(0,_.Em)();

假设_.Em是一个函数,上面的语句将导致调用函数,这很明显.另一方面,如果没有定义,那么结果与简单的_.Em()是一样的呢?

任何人都可以了解使用这种语法背后的想法吗?

解决方法

基本上,这种语法允许在窗口对象的上下文中调用_.Em(),而不是_.

假设你有这个代码

Foo = function() {
    this.foo = "foo";
};

Foo.prototype.Em = function() {
    alert(this.foo);
};

var _ = new Foo();

发出_.Em()将导致在_的上下文中调用Em().在函数内部,这个关键字将引用_,所以将打印出foo.

Issuing(0,_.Em)()将方法调用与对象分离,并在全局上下文中执行调用.在函数内部,该关键字将引用窗口,因此未定义将被打印,因为窗口没有foo属性.

您可以测试this fiddle中两种语法之间的差异.

原文链接:https://www.f2er.com/js/152290.html

猜你在找的JavaScript相关文章