类的默认方法

问题描述:

当我调用实例时,JS中有一种方法可以执行缺省方法吗?类的默认方法

例子:假设我有一个名为MyClass下面的类,然后我开始这个类名为foo的情况下,我想,当我打电话foo执行的MyClassdefault方法。

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

实例化对象时调用的唯一缺省方法是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