2010-02-10 1 views
9

у меня есть это:В javascript, как мне вызвать метод класса из другого метода в том же классе?

var Test = new function() { 
    this.init = new function() { 
     alert("hello"); 
    } 
    this.run = new function() { 
     // call init here 
    } 
} 

Я хочу назвать init в течение пробега. Как мне это сделать?

+2

Там нет классов или методов класса в JavaScript –

+0

Ballance @ Крис Thats не * явно * правда .. – austinheiman

ответ

6

Используйте this.init(), но это не единственная проблема. Не называть новые внутренние функции.

var Test = new function() { 
    this.init = function() { 
     alert("hello"); 
    }; 

    this.run = function() { 
     // call init here 
     this.init(); 
    }; 
} 

Test.init(); 
Test.run(); 

// etc etc 
+0

Но с этим, я не могу назвать ' Test.init() 'из другого класса. Как сделать так, чтобы 'Test' был singleton, но все же был в состоянии вызвать' init() 'таким образом? – Chetan

+0

@Chetan: см. Правки. –

+0

Работает отлично для меня, firebug не жалуется. Вы удалили «новое» из объявлений функций внутри теста? –

1
var Test = function() { 
    this.init = function() { 
     alert("hello"); 
    } 
    this.run = function() { 
     this.init(); 
    } 
} 

Если я не уверен, то здесь отсутствует, вы можете упасть «новый» из вашего кода.

+0

Это прекрасно ... Нет? –

2

Попробуйте это,

var Test = function() { 
    this.init = function() { 
    alert("hello"); 
    } 
    this.run = function() { 
    // call init here 
    this.init(); 
    } 
} 

//creating a new instance of Test 
var jj= new Test(); 
jj.run(); //will give an alert in your screen 

Спасибо.

3

Вместо этого попробуйте писать об этом так:

function test() { 
    var self = this; 
    this.run = function() { 
     console.log(self.message); 
     console.log("Don't worry about init()... just do stuff"); 
    }; 

    // Initialize the object here 
    (function(){ 
     self.message = "Yay, initialized!" 
    }()); 
} 

var t = new test(); 
// Already initialized object, ready for your use. 
t.run() 
+0

Он работал для меня, используя Node.js –

Смежные вопросы