为什么这个带有正则表达式的JavaScript代码不能像我预期的那样工作?

时间:2011-08-10 03:17:39

标签: javascript override

a = /\d+/.exec; 
a("hello,123")

我收到以下错误:

Error: can't convert undefined to object

为什么a作为未定义返回?

1 个答案:

答案 0 :(得分:4)

在这种情况下,

a是对RegExp.prototype.exec函数本身的引用,实际上并不绑定到任何正则表达式。这些都可以起作用:

var a = /\d+/.exec('hello,123');

var rx = /\d+/,
     a = rx.exec;

a.call(rx, 'hello,123');

undefined来自this函数内的exec的内部引用。