2013-10-11 37 views
1

是否可以將onchange事件添加到字符串?nodejs如何將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 

回答

2

不,這是不可能的,因爲字符串是在JavaScript中不可變的。

任何顯示爲改變字符串的字符串操作實際上是創建一個新的字符串。

所以,即使你以某種方式附着事件String.prototype,有沒有辦法檢測因爲字符串的改變無法改變

0

因爲「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'