为什么在这个链接内置JavaScript方法的实例中没有使用括号

时间:2016-03-22 17:21:50

标签: javascript chaining parentheses

我参考这个答案:https://stackoverflow.com/a/8934895/4275690

    Array.min = function( array ){
    return Math.min.apply( Math, array );
};

Howcome Math的min方法在.apply()被链接到它之前不需要括号吗?我对该语法的理解是.min没有括号是一个属性。

我的困惑之所以产生,是因为我对链接的大部分经验来自于使用类似于以下代码的jQuery:

    jQuery("div").hide("slow", function(){
      jQuery(this)
      .addClass("done")
      .find("span")
      .addClass("done")
      .end()
      .show("slow", function(){
        jQuery(this).removeClass("done");
      });
    });

来源:http://ejohn.org/blog/ultra-chaining-with-jquery/

2 个答案:

答案 0 :(得分:2)

.apply不是链接的电话,它是每个Function的属性,因为每个函数都继承自Function.prototype,所以它可用。

即,给定:

var m = Math.min;

然后m.apply只是访问该函数的.apply属性。

答案 1 :(得分:-1)

()附加到属性名称会获取该属性的值,并尝试将其作为函数调用。

函数是对象,因此可以拥有自己的属性。

applymin(和其他所有)函数的属性(即它不是调用min的返回值的属性)。

这与方法链接无关,方法链接是方法的返回值是调用方法的对象。