为什么在这个链接内置 JavaScript 方法的实例中不使用括号
Why aren't parenthesis used in this instance of chaining built-in JavaScript methods
我参考了这个答案:
Array.min = function( array ){
return Math.min.apply( Math, array );
};
为什么 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");
});
});
将 ()
附加到 属性 名称采用该 属性 的值并尝试将其作为函数调用。
函数是对象,因此可以拥有自己的属性。
apply
是 min
(以及所有其他)函数的 属性(即它不是 return 值的 属性调用 min
)。
这与方法链无关,方法链的 return 值是调用该方法的对象。
.apply
不是链式调用,它是每个 Function
的 属性,它可用是因为每个函数都继承自 Function.prototype
.
即给定:
var m = Math.min;
然后 m.apply
只是访问该函数的 .apply
属性。
我参考了这个答案:
Array.min = function( array ){
return Math.min.apply( Math, array );
};
为什么 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");
});
});
将 ()
附加到 属性 名称采用该 属性 的值并尝试将其作为函数调用。
函数是对象,因此可以拥有自己的属性。
apply
是 min
(以及所有其他)函数的 属性(即它不是 return 值的 属性调用 min
)。
这与方法链无关,方法链的 return 值是调用该方法的对象。
.apply
不是链式调用,它是每个 Function
的 属性,它可用是因为每个函数都继承自 Function.prototype
.
即给定:
var m = Math.min;
然后 m.apply
只是访问该函数的 .apply
属性。