监听原始的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之一
Undefined
,Null
,Boolean
,Number
或String
types的成员注意:原始值是直接在语言实现的最低级别表示的数据。
为了防止混淆, 第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