类的默认方法
问题描述:
当我调用实例时,JS中有一种方法可以执行缺省方法吗?类的默认方法
例子:假设我有一个名为MyClass
下面的类,然后我开始这个类名为foo
的情况下,我想,当我打电话foo
执行的MyClass
的default
方法。
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
答
实例化对象时调用的唯一缺省方法是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
我不相信的JavaScript有这样的功能,虽然有人比我更熟悉规范可能证明我错了。这就是说,编写'foo.props'真的更麻烦吗? –
请记住,如果我们问什么是用例? –
我很困惑,你怎么知道你什么时候想要'foo'这个对象,'foo'这个'MyClass'的实例?如果'props'包含一个方法'hello()',会发生什么? – CodingIntrigue