2012-02-14 8 views
15

szukałem konstruktora lub funkcji init do następującej sytuacji:Konstruktor lub init dla obiektu

var Abc = function(aProperty,bProperty){ 
    this.aProperty = aProperty; 
    this.bProperty = bProperty; 
}; 
Abc.prototype.init = function(){ 
    // Perform some operation 
}; 

//Creating a new Abc object using Constructor. 

var currentAbc = new Abc(obj,obj); 

//currently I write this statement: 
currentAbc.init(); 

Czy istnieje sposób, aby wywołać funkcję init, gdy nowy obiekt jest inicjowany?

+1

Umieść go w contructor. –

Odpowiedz

17

Możesz po prostu zadzwonić init() z funkcji konstruktora

var Abc = function(aProperty,bProperty){ 
    this.aProperty = aProperty; 
    this.bProperty = bProperty; 
    this.init(); 
}; 

Oto skrzypce wykazanie: http://jsfiddle.net/CHvFk/

+3

Wadą tego wzoru jest to, że init jest publiczny. Można go nazwać jak a.init(). Zwykle funkcje init są prywatne. Dlatego dobrze byłoby zdefiniować go w konstruktorze. Zobacz [aktualizacja fiddle] (http://jsfiddle.net/CHvFk/126/) – Buzut

11

Być może coś takiego?

var Abc = function(aProperty,bProperty){ 
    this.aProperty = aProperty; 
    this.bProperty = bProperty; 
    this.init = function(){ 
     // Do things here. 
    } 
    this.init(); 
}; 
var currentAbc = new Abc(obj,obj); 
+2

To jest poprawne, musisz wywołać funkcję init() PO jej zdefiniowaniu. – Wes

-4

Dlaczego nie umieścić rzeczy w funkcji init do cunstructor, tak:

var Abc = function(aProperty,bProperty){ 
    this.aProperty = aProperty; 
    this.bProperty = bProperty; 

    // Perform some operation 

}; 
+1

Dlaczego używane są funkcje? Aby zmniejszyć nadmiarowość i modułowość kodu. To dlatego chcę go jako funkcję. – emphaticsunshine

4

jeśli metoda startowych powinny pozostać prywatne:

var Abc = function(aProperty,bProperty){ 
    function privateInit(){ console.log(this.aProperty);} 
    this.aProperty = aProperty; 
    this.bProperty = bProperty; 

    privateInit.apply(this); 
}; 

Lubię to więcej.

0

Co z tym?

var Abc = function(aProperty,bProperty){ 
    this.aProperty = aProperty; 
    this.bProperty = bProperty; 

    //init 
    (function() { 
     // Perform some operation 
    }.call(this)); 
}; 
var currentAbc = new Abc(obj,obj); 
Powiązane problemy