【问题标题】:dropzone.js: __slice = [].slicedropzone.js: __slice = [].slice
【发布时间】:2016-11-26 11:20:31
【问题描述】:

我正在尝试找出 enyo 出色的 dropzone.js 的至少一部分。我对 JavaScript 的思路和原型范式相当熟悉。第四行有一行代码,我想知道它的作用以及为什么要使用这样的行。该行如下所示:

var __slice = [].slice

我是否理解正确,这从数组原型对象中获取 slice 函数,只是给它一个更简单的方法来引用它?这种方法有什么好处?为什么开头有双下划线?我在某处读到,这是为了避免全局范围内的冲突,但是通过将整个代码包装在

(function() { //code here
}).call(this);

构造?

【问题讨论】:

    标签: javascript dropzone.js


    【解决方案1】:

    我是否理解正确,这从数组原型对象中获取 slice 函数,只是给它一个更简单的方法来引用它?

    是的。

    这种方法有什么好处?

    __sliceArray.prototype.slice 短(这也需要几层额外的属性查找),[].slice 理论上会创建并丢弃一个对象。因此,拥有一个标识符只是节省了一些输入和最小、最小、最微小的运行时性能。

    为什么开头有双下划线?我在某处读到,这是为了避免全局范围内的冲突,但是通过将整个代码包装在 ...

    是的,这样做已经避免了。在这种情况下,这只是作者想要使用的约定,也许是为了表明这是他/她到Array.prototype.slice 的快捷方式。 __ 没有内在意义。

    【讨论】:

    • 感谢您的确认和启发这背后的推理。回答接受。看看前面的代码,我可能会问很多这样的东西......:D
    猜你喜欢
    • 2020-12-31
    • 2017-05-31
    • 2012-02-18
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2017-05-19
    相关资源
    最近更新 更多