Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 监视器原语字符串声明_Javascript_String_Node.js_Primitive - Fatal编程技术网

Javascript 监视器原语字符串声明

Javascript 监视器原语字符串声明,javascript,string,node.js,primitive,Javascript,String,Node.js,Primitive,是否有任何方法可以监视NodeJS中的原语字符串声明? 例如,当我执行测试时是否有任何方法可以触发一个特殊事件,并将“test”作为参数?我不确定您所说的“test;”是什么意思;但是,如果您希望在变量被分配新值时触发事件,则没有办法触发变量更改事件 如果您想查看一个变量,最好重新设计系统以进行调用,而不是分配一个变量。而不是做: running_mode = "test"; 要求 switch_mode("test"); 并调用在此更新中要触发的任何事件处理程序 如果您确实想查看全局变量的

是否有任何方法可以监视NodeJS中的原语字符串声明?
例如,当我执行
测试时
是否有任何方法可以触发一个特殊事件,并将
“test”
作为参数?

我不确定您所说的“test;”是什么意思;但是,如果您希望在变量被分配新值时触发事件,则没有办法触发变量更改事件

如果您想查看一个变量,最好重新设计系统以进行调用,而不是分配一个变量。而不是做:

running_mode = "test";
要求

switch_mode("test");
并调用在此更新中要触发的任何事件处理程序

如果您确实想查看全局变量的值,可以在主循环的每一圈检查一次该值:

function is_mode_changed() {
   if (running_mode=="test") event_handler();
   process.nextTick(is_mode_changed);
}
调用此函数后,它将在主循环的每一圈继续运行一次。如果您想做的是跟随一个变量来执行某些特定的任务,比如跟随一个全局计数器并在每次计数器达到1000时执行一些清理任务,那么这是一个很好的方法。如果您想在变量更改后立即执行某些操作,则不可能

我希望我能正确理解你的问题

更新

[我在下面的评论中添加了这一点,因为我误解了问题,所以上面的所有内容都与问题无关。]

正如您所提到的,像
“test”
这样的字符串文字是一个基本值,它不是对象。因此,它是由解释器以我们无法改变的方式处理的

从Ecma-262:

4.3.2原始值

第8条中定义的
未定义
布尔
数字
,或
字符串
类型之一的成员

注意:原语值是直接在语言实现的最低级别表示的数据


为了避免混淆,第8条是关于上述类型的标准部分。

由于您指定了V8,而不是按照规范ECMAScript,因此您可以使用更多具体选项。在V8 API中,类/模板或原语与原语的对象包装器的类/模板或原语是分开的。为了能够以某种方式钩住以了解何时实际发生这种情况,可能需要以自定义方式修改v8,但这是可行的

还有很多动作发生在js本身。也许不是构造器本身,而是此后发生的一切。String.prototype.toString/valueOf


这不是我的问题。问题是,有两种方法可以声明字符串:
“test”
将返回一个原语值,
String(“test”)
将返回一个对象。当
String(“test”)
调用
String
的构造函数时,
“test”
不调用任何构造函数。我想知道是否每次构造基元值时都会触发事件。为什么需要这样做?因为你不能,但如果我们知道你为什么要这样做,我们可能会找到解决办法。这不是V8 API,而是源代码:p…当然,一旦你决定修改任何你想要修改的东西,任何东西都是可能的!当您以这种方式修改V8时,它不再是V8。当您修改原语的工作方式时,它不再是JavaScript。。。这是可行的,因为让火车和飞机在轨道上飞行。你只需要一个翅膀和另一个钢轮。。。只是开玩笑,没什么大不了的。:)事实上,没有办法监视任何类型的文本构造函数调用,原语,数组,函数,对象。文字是为数不多的没有方法可以洞察的事物之一。其他任何事情都有诀窍,或者几乎所有事情都有诀窍。