2011-03-12 3 views
6

JavaScript에서 변수의 변경 사항을 수신하는 이벤트가있는 방법이 있습니까? 그래서 값이 변경되면 이벤트가 트리거되고 함수를 호출 할 수 있습니다. 이 컨텍스트에 더 넣으려면 개체 배열의 html 렌더링을 처리하는 함수가 있고 배열을 수정할 때마다 자동으로이 함수를 호출해야합니다.변수가 변경 될 때마다 JavaScript에서 함수를 실행하는 방법은 무엇입니까?

감사합니다.

+0

'setters'는 먼저 설정 될 변수를 구문 분석 할 수있는 'helpers'입니다. 코드에 대한 어떤 가능성과 제어 수준이 있는지는 모르지만, setter에서는 함수를 호출 할 수 있습니다. – pimvdb

답변

7

사용 object.watchdocs하고 지원되지 않는 경우 기본적으로이 구현 보면 : 당신은 너무 많은 시간을 그 가치에 대한 두 번째를 확인 setInterval을 사용하고 별도의 변수에 저장할 수 Object.watch() for all browsers?

+1

시계 메소드가 더 이상 사용되지 않습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch –

6

나는 당신이 원하는 것이 무엇이라고 생각하지 않습니다.

용액에 수 있습니다 :

  • 는이 데이터 객체의 setter 메소드를 사용하는 특정 객체로
  • 액세스 데이터를 캡슐화

    • 그 세터 방법 모두 :
      • 세트 데이터
      • 함수 호출

    하지만 약간의 코드를 다시 작성해야합니다.

  • +0

    이 작업을 수행하는 가장 쉬운 방법은 생각합니다. 어쩌면 일부 프레임 워크에는 이와 같은 기능이있을 수도 있습니다. – Chris

    1

    . 실제 변수가 다른 변수와 다른지 여부를 매번 확인할 수 있습니다. 이 경우 함수를 호출하십시오.

    하지만 더러운 속임수입니다.

    +0

    +1, 더러운 것 같습니다. 전혀 좋지 않다. 하지만 다른 옵션을 사용하지 않고, 올바른 시나리오에서, 그냥 작동 할 수 있습니다 :) –

    +0

    음 .. 정말 작고 잠재적 인 버그가있는 코드를 원한다면이 작은 응용 프로그램에서 작동하는 것 같아요 ..변수가 "새로운"값이지만 함수가 실행되지 않은 작은 창이 여전히 존재하기 때문에 특정 시나리오에서 버그를 생성 할 수 있습니다. 당신이 말할 수 없다면,이 방법을 선호해서는 안됩니다. Mr./Ms. 캐주얼 옵서버, 누가이 의견을 읽고있을 수도 있습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype과 getter/setter 함수를 사용하여 개체를 만드는 것이 좋습니다. – dylnmc

    1

    JavaScript는 아직 setter/getter 메소드를 보편적으로 지원하지 않기 때문에 변수 설정 방법을 생각해 보는 것이 좋습니다.

    Array.prototype.setMember = function(index,newValue) { 
        alert("I will perform some action here"); 
        this[index] = newValue; 
    } 
    
    var myArray = [1,2,3]; 
    // x[0] = 11; // Don't do this any more 
    x.setMember(0,11); 
    alert(x[0]); 
    

    개인적으로 프로토 타입을 기반으로하는 새로운 방법을 추가하는 열렬한 팬이 아니지만, 그것은 단기적으로 리팩토링하기가 쉬울 것입니다 : 일하는 것이 하나 개의 기술이다.

    +0

    네, 예를 들어 Array를 사용하여이 작업을 수행하기 만하면 완전히 새로운 객체를 만드는 것보다 쉽고 좋습니다. 좋은 생각 – dylnmc

    관련 문제