gpt4 book ai didi

javascript - 如何检查一个对象是否是跨 V8 上下文的正则表达式?

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:18 24 4
gpt4 key购买 nike

我最近discovered当您在一个 V8 上下文中使用文字正则表达式语法时,即使您在上下文之间共享全局 RegExp 对象,instanceof RegExp 也会返回 false。

var Contextify = require('contextify');
var ctx = Contextify({ RegExp:RegExp, app: anExpressApp });

// When you create a new route, Express checks if the argument is an
// `instanceof RegExp`, and assumes it is a string if not.

ctx.run("
app.get(new RegExp('...'), function() { ... }); // works because we share the `RegExp` global between contexts
app.get(/.../, function() { ... }); // does not work
");

如何可靠地检查对象是否为 RegExp 跨上下文?

最佳答案

看起来像this suggestion为我们提供最可靠的路线。

if (Object.prototype.toString.call(regExp) == '[object RegExp]') ...

这依赖于 specified behavior of toString , 即返回 JavaScript 内部 [[Class]]对象的属性(加上 [object " and "]")。

由于这是简单的字符串比较,因此它适用于跨上下文。

关于javascript - 如何检查一个对象是否是跨 V8 上下文的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com