2013-10-20 3 views
2

이것은 바보가 될 것입니다,하지만 ... 나는 내 인생에 대한 개체의 모든 메서드를 초기화하는 방법을 알아낼 수 없습니다. 자바 스크립트 개체 속성을 초기화

var obj = { 
prop1: function() { ... }, 
prop2: function() { ... } //etc 
} 

예를

를 들어 이 될 것이라고, obj.prop1()와 obj.prop2()를 호출하지 않고 그들을 초기화 내가 ya'know 10 + 기능이있는 경우 지루한 변화하는 방법을 알아낼 수 없습니다. 또한
var obj = new obj(); 

function obj() { 
    this.init=function() { ... }; 
    this.init(); 
} 

그러나, 지금까지 내가 말할 수있는, 다시, 나는 각각 독립적으로 하나를 초기화해야 할 것, 같은 것을 살펴 보았다.

답변

0

나는 당신이 원하는 완전히 이해 있는지 확실하지 않습니다하지만이 일할 수 :

var obj = { 

prop1: function() { return true; }, 
prop2: function() { return false; } 

} 
//init 
for(var r in obj){ 
     obj[r](); // call! 
} 

아니면 OBJ의 일환으로

가 :

var obj = { 
    prop1: function() { return true; }, 
    prop2: function() { return false; }, 
    init: function() { 
    for(var r in this){ 
     //prevent calling your self... 
     if (r!=='init'){ 
      this[r](); 
     } 
    } 
    } 
} 

obj.init(); 
+0

당신이, 당신은 단지 위와 같이 단일 개체에 대한 사용 여기에 사용이 init 메소드를 사용하여 객체와 일치 __init의 모든 속성을 통해 루프? 나는 당신이 상속을 원할 때와 같이 싱글 톤 객체를 사용하지 않을 때 새로운 구문을 사용할 것이라고 가정한다. var obj = new MyObject(); – Donato

+0

@DanStayntouch 예, 맞습니다. – rene

1

난 정말 당신이 왜 이해하지 않는다 단일 객체에 대해 10 가지 다른 것들을 초기화해야합니다.

이 작업을 수행하는 한 가지 방법은 모든 호출을 단일 init 메서드에서 숨기지 만 거기에서 10 개의 메서드를 모두 실행해야합니다.

다른 방법은 모든 초기화 메소드의 이름을 __initMyCustomInit과 같이 특수하게 지정하는 것입니다. 그 후 할 수 있습니다 정규식 ^__init.*$

for (var prop in obj) { 
    if (obj.hasOwnProperty(prop) && prop.match(/^__init.*$/)) { 
    obj[prop](); 
    } 
}