2013-10-11 34 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'