2013-10-11 5 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

아니,이 수 없습니다 :

나는 이런 식으로 뭔가를 할 수 있습니다.

문자열을 변경하는 것처럼 보이는 모든 문자열 연산이 실제로 새로운 문자열을 생성합니다.

그래서, 당신은 어떻게 든 String.prototype에 이벤트를 연결하더라도, 문자열 이후 변화가 있기 때문에 "macek"(그런데 감사)의 대답의

0

을 변경할 수 없다 하는 방법은을 감지하지있다 이것은 올바른 대답이 아니지만 "해결 방법"thats는 나를 위해 잘 작동합니다. 어쩌면 누군가 다른 사람에게도 도움이 될 것입니다.

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' 
관련 문제