簡體   English   中英

node.js如何向字符串添加onchange事件

[英]nodejs how to add onchange event to a string

是否可以向字符串添加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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM