2017-02-26 65 views
-1

JavaScript RegExp constructor Property ❮ JavaScript RegExp Object 文章(上w3school的)说解释参考返回功能

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

什么的上面其实是什么意思 AFAIU,下面的代码,返回(警告)整个函数定义而不是引用或是它?我不确定。

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

有些可以让上面的语句更清晰一些,最好是举一个例子。

由于 DK

回答

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指向同一个对象。

+0

*“...两个不同的'构造函数属性...”*它们与'constructor'属性不同,它们是相同的继承属性。 –

0

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

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

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