NodeJS如何将onchange事件添加到字符串中

nodejs how to add onchange event to a string

本文关键字:添加 字符串 事件 onchange NodeJS      更新时间:2023-09-26

是否可以将onchange事件添加到字符串中?

我想要这样的东西:

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

不,这是不可能的,因为字符串在 JavaScript 中是不可变的。

任何看起来好像在更改字符串的字符串操作实际上都在创建一个新字符串。

因此,即使您以某种方式将事件附加到String.prototype,也无法检测到更改,因为字符串永远不会更改

由于"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'