如何将 `RegExp.test` 部分应用于字符串?
How to partially apply `RegExp.test` to a string?
为什么这不起作用:
var func = /o/.test;
func("hello");
// VM165:1 Uncaught TypeError: Method RegExp.prototype.test called on incompatible receiver undefined
// at test (<anonymous>)
// at <anonymous>:1:1
// (anonymous) @ VM165:1
但是这样做:
/o/.test("hello");
// true
编辑
使用call
或bind
方法。
// Call Approach
var func = /o/.test;
func.call(/o/, "hello")
//Bind Approach
var func = /o/.test.bind(/o/);
func("hello");
当您从 Object 获取方法并将其分配给变量时,您需要为 this
提供绑定,因为上下文( Object )不会随方法一起传递。
var func = /o/.test.bind(/o/);
console.log( func("hello") );
为什么这不起作用:
var func = /o/.test;
func("hello");
// VM165:1 Uncaught TypeError: Method RegExp.prototype.test called on incompatible receiver undefined
// at test (<anonymous>)
// at <anonymous>:1:1
// (anonymous) @ VM165:1
但是这样做:
/o/.test("hello");
// true
编辑
使用call
或bind
方法。
// Call Approach
var func = /o/.test;
func.call(/o/, "hello")
//Bind Approach
var func = /o/.test.bind(/o/);
func("hello");
当您从 Object 获取方法并将其分配给变量时,您需要为 this
提供绑定,因为上下文( Object )不会随方法一起传递。
var func = /o/.test.bind(/o/);
console.log( func("hello") );