Javascript 为什么可以将原型函数存储在变量中?

Javascript 为什么可以将原型函数存储在变量中?,javascript,Javascript,为了提高我对JavaScript的理解,我开始阅读其他人的源代码。在Github上,我遇到了顶部有以下变量声明的: var has = Object.prototype.hasOwnProperty; 在后面的代码中,它是这样使用的: if (has.call(params, key)) { // stuff } 这到底是怎么回事?实际上,has现在是Object.prototype.hasOwnProperty的某种别名,但是为什么可以将原型方法存储在变量中?既然它现在是函数调

为了提高我对JavaScript的理解,我开始阅读其他人的源代码。在Github上,我遇到了顶部有以下变量声明的:

var has = Object.prototype.hasOwnProperty;
在后面的代码中,它是这样使用的:

if (has.call(params, key)) {  
    // stuff
}

这到底是怎么回事?实际上,
has
现在是
Object.prototype.hasOwnProperty
的某种别名,但是为什么可以将原型方法存储在变量中?既然它现在是函数调用,就不会返回任何内容。

您没有将函数存储在变量中,您刚刚创建了对该函数的引用。

函数是Javascript中的一级公民(在某些其他语言中也是如此),这意味着它们可以分配给变量,作为参数传递给其他函数,也可以从函数返回。Wikipedia上有一篇关于第一类函数的好文章:

同样的原因,你可以做
var x=function(){};变量y=x-它只是传递对函数的引用如果您对该语言的详细信息感兴趣,该文档将非常有用: