监听原始的String声明

在NodeJS中是否有任何监控原始String声明的方法? 例如,当我做"test"; 是否有任何触发"test"作为参数的特殊事件的方式?

我不确定你的意思是做“testing” ; 但是如果你想在一个variables被分配一个新值的时候触发一个事件,否则没有办法为variables变化触发一个事件。

如果你想看一个variables,最好是重新devise你的系统来拨打电话,而不是分配一个variables。 而不是做:

 running_mode = "test"; 

要求

 switch_mode("test"); 

并调用您想要在此更新上触发的任何事件处理程序。

如果你真的想看一个全局variables的值,你可以通过在主循环的每一个循环中检查一次值来完成:

 function is_mode_changed() { if (running_mode=="test") event_handler(); process.nextTick(is_mode_changed); } 

一旦你调用这个函数,它将在主循环的每一回合中继续运行一次。 如果你想要做的事情就像跟随一个variables来做一些特定的任务一样,就像跟随一个全局计数器,并且每次计数器达到1000时做一些清理任务,这是一个很好的方法。 如果你想在一个variables被改变后立即做些什么,那是不可能的。

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

UPDATE

[我在下面的评论中增加了这个,这个评论使得所有的东西都与问题无关,因为我误解了它。]

正如你自己提到的,像"test"这样的string文字是一个不是对象的原始值 。 所以,这是由口译人员以我们无法改变的方式来处理的。

从Ecma-262:

4.3.2原始值

第8章中定义的types之一UndefinedNullBooleanNumberStringtypes的成员

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

为了防止混淆, 第8章是上面列出的types标准部分。

既然你指定了V8,而不是per-spec-ECMAScript,你可以select更具体的选项。 在V8 API中,存在与基元的对象包装分离的类/模板或基元。 为了能够通过某种方式知道实际发生的情况,可能需要以自定义的方式修改v8,但这是可行的。

http://code.google.com/p/v8/source/browse/branches/bleeding_edge/include/v8.h#1017

也有很多的行动发生在js本身。 也许不是构造函数本身,而是之后发生的一切。 String.prototype.toString /的valueOf。

http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/string.js

Interesting Posts