2015-10-06 2 views

ответ

0

Вы можете получить доступ к второму методу с помощью this:

var SomeClass = { 
    methodOne: function(){ 
     if(this.methodTwo){ 
      console.log('first'); 
     } 
    }, 
    methodTwo: function(){ 
     console.log('second'); 
    } 
}; 

В этом случае this относится к объекту, в течение которого функция объявлена.

2

Пожалуйста, не используйте слово «класс» в JavaScript, JS прототип на основе языка наследования, так что вы должны написать это так:

var myPrototype = { 
    methodOne: function() { 
     console.log('Invoking method one'); 
     if (this.methodTwo()) { 
      doSomething(); 
     } 
    }, 
    methodTwo: function (account) { 
     console.log('Inovking method two') 
    } 
} 

var instance = Object.create(myPrototype); 

Вы можете использовать ES6 «класс» синтаксический сахар (и перевести его в ES5 для браузера), конечно, но мне это не очень нравится (в ES6 все еще нет класса, несмотря на новые ключевые слова).

JSFiddle demo

+0

'this' возвращает мне текущий элемент HTML, но не прототип – gena2

+0

Что? Какой элемент HTML? – laruiss

+1

@ gena2 Как вы называете методOne? контекст ('this') может варьироваться в зависимости от этого. –

0

Как это?

SomeClass = function() { 
     this.methodOne = function(){ 
      if (this.methodTwo('')){ 
        doSomething(); 
       } 
     } 
     this.methodTwo = function (account){ 
      doSomethingElse() 
     } 
    } 

    var instance = new SomeClass(); 

    alert(instance.methodOne()); 
Смежные вопросы