这JavaScript RegExp constructor Property ❮ JavaScript RegExp Object 文章(关于w3school)说
返回值是对函数的引用,而不是函数的名称:
上述内容实际意味着什么? AFAIU,下面的代码,返回(警告)整个函数定义而不是引用,或者是它?我不确定。
var patt = new RegExp("Hello World", "g");
alert(patt.constructor);
有些人可以让上述陈述更清楚,最好是举个例子。
由于 dk
答案 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