2016-04-28 3 views
0

Есть ли способ в JS выполнить метод по умолчанию при вызове экземпляра?Метод по умолчанию для класса

Пример: Предположим, у меня есть следующий класс с именем MyClass, то я начинаю экземпляр этого класса с именем foo, я хочу, чтобы, когда я звоню foo выполнить default метод MyClass.

class MyClass { 
    constructor() { 
    this.props = { 
     question: 'live, universe, everything', 
     answer: 42 
    } 
    } 

    default() { 
    return this.props 
    } 

    hello() { 
    return 'hello world' 
    } 
} 
const foo = new MyClass() 

// execute the default method 
console.log(foo) // log: {question: 'live, universe, everything', answer: 42} 

// execute hello method 
console.log(foo.hello()) // log: hello world 
+0

Я не верю JavaScript имеет такую ​​особенность, хотя кто-то более осведомленный со спекуляцией, чем я, может доказать, что я ошибаюсь. Тем не менее, действительно ли это гораздо труднее написать 'foo.props'? –

+0

Если мы спросим, ​​что такое прецедент? –

+1

Я смущен, как бы вы узнали, когда хотите 'foo' объекта и' foo' экземпляр 'MyClass'? Что произойдет, если 'props' содержит метод' hello() '? – CodingIntrigue

ответ

3

Единственный метод по умолчанию, который вызывается при создании экземпляра объекта является constructor.

В ES6 вы можете вернуть все, что вы хотите от конструкторы поэтому следующий код действителен:

class MyClass { 
     constructor() { 
       var instance = { 
        question: 'live, universe, everything', 
        answer: 42, 
        hello:() => { return 'hello world' } 
       } 
       return instance; 
     } 
    } 

Вы можете создать экземпляр объекта, как это:

var foo = new MyClass(); 
foo.hello(); //Hello world 
console.log(foo.question); //live, universe, everything 
console.log(foo.answer); //42 
+0

вот что я хотел! Спасибо большое! – Rog

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