nodejs如何将onchange事件添加到string

是否有可能将一个onchange事件添加到一个string?

我想要这样的东西:

var myString = ''; var doSomething = function(){ console.log('string changed'); }; myString.on('change',doSomething); myString = 'new'; //at this point the on('change') event should be run 

不,这是不可能的,因为string在JavaScript中是不可变的。

任何显示为改变string的string操作实际上是创build一个新的string。

所以,即使你以某种方式将事件附加到String.prototype ,也无法检测到一个变化,因为一个string永远不会改变

由于“macek”的答案(顺便说一下),这不是一个正确的答案,而是一个“解决方法”,这对我很有好处。 也许别人也帮助了这个。

 var events = require('events'); var myString = function(val){ this.myVal = val; this.change = function(newVal) { if(newVal !== this.myVal){ this.myVal = newVal; this.emit('changed'); } } this.val = function(){ return this.myVal; } }; myString.prototype.__proto__ = events.EventEmitter.prototype; var doSomething = function(){ console.log('string changed'); }; var somestring = new myString(''); console.log(somestring.val()); // output '' somestring.on('changed',doSomething); somestring.change('new'); //output doSomething() -> 'string changed' console.log(somestring.val()); //output 'new'