解释对返回函数的引用

时间:2017-02-26 10:29:24

标签: javascript javascript-objects

JavaScript RegExp constructor Property ❮ JavaScript RegExp Object 文章(关于w3school)说

  

返回值是对函数的引用,而不是函数的名称:

上述内容实际意味着什么? AFAIU,下面的代码,返回(警告)整个函数定义而不是引用,或者是它?我不确定。

 var patt = new RegExp("Hello World", "g");
 alert(patt.constructor); 

有些人可以让上述陈述更清楚,最好是举个例子。

由于 dk

2 个答案:

答案 0 :(得分:1)

在JavaScript中,函数是一种对象。

对象总是通过引用来解决。

var foo = {};

foo的值是对新对象的引用。

var bar = foo;

bar的值是对同一对象的引用。

function baz() {

}

baz的值是对函数对象的引用。

var aaa = baz;

aaa的值是对同一对象的引用。

  

AFAIU,下面的代码,返回(警告)整个函数定义而不是引用或是吗?

该引用用于获取该功能。函数的toString()方法是隐式调用的。该字符串会被警告。

JavaScript不使用显式引用。只要处理对象,就可以处理引用。

将其作为比较:



 var one = new RegExp("Hello World", "g");
 var two = new RegExp("Goodbye World", "g");
 one.constructor.foo = "Value of foo";
 alert(two.constructor.foo); 




...因为你处理引用,两个不同的constructor属性指向同一个对象。

答案 1 :(得分:0)

如前所述,JavaScript函数是一种特殊类型的对象。对象通过引用传递。这意味着函数在传递时通过引用传递。

该语句试图说明传递的内容实际上是函数本身,而不仅仅是函数的名称(如一个字符串)。

var patt = new RegExp("Hello World", "g");
patt.constructor === RegExp;      // true
typeof RegExp;                    // function
RegExp.name;                      // RegExp
typeof RegExp.name;               // string