RegExp.prototype仅适用于:
var a = /abc/g
a.tester()
var b = /xyz/
b.tester()
不适用于:
/abc/g.tester()
/abc/.tester()
有没有办法可以解决这个问题,以便三者都可以工作?
平视
它必须是RegExp.prototype
问题:原生.test()
如何做到这一点?
RegExp.prototype.tester = function(s, v) {
console.log("I'm working")
console.log(this)
}
a = /abc/g
b = /xyz/
a.tester()
b.tester()
RegExp.prototype.tester = function(s, v) {
console.log("I'm working")
console.log(this)
}
/abc/g.tester() //This is a problem
/abc/.tester() //This is a problem
答案 0 :(得分:3)
它只是一个语法错误,而不是原型继承的问题(并且调用.test
而不是.tester
不会有所作为)。用分号!
RegExp.prototype.tester = function (s,v) {
console.log("I'm working")
console.log(this)
}; /*
^ */
/abc/g.tester(); // now it's not a problem
/abc/.tester(); // any more
这里发生的是解析器将您的代码解释为一个大型语句:
… = function(){…} / abc / g.tester() / abc / .tester();
事实上,除法运算符.
之后的属性访问/
是一个意外的令牌。
如果您想省略分号,let them be automatically inserted需要可能的,那么(
[
开头的每一行都会need to put one at the begin },/
,+
,-
或`
。