我正在尝试使用Simple “Class” Instantiation,其中一个类可以返回自身的new
版本并返回其自身的实例化版本。
function User(first, last){
if ( this instanceof User ) {
this.name = first + " " + last;
} else
return new User(first, last);
}
我正在尝试查看es6类是否可行。
class User {
constructor(first, last){
if ( this instanceof User ) {
this.name = first + " " + last;
} else
return new User(first, last);
}
}
}
但是我遇到了这个错误:
TypeError:类构造函数如果没有,则无法调用用户 '新'
我想知道是否有办法绕过它。
答案 0 :(得分:3)
我想知道是否有办法绕过它。
嗯,不。我认为这是件好事。与前一种方法相比,使用ES6 Class的优点是它实际上就像一个类,没有怪癖和混乱。如果你把理由做成你想做的事,请参考你引用的文章:
首先是新的JavaScript程序员将遇到的问题。在一个 快速观察上面的代码并不是很明显的 该函数实际上是要实例化的东西......
其次,如果要实例化一个类风格的函数,那么 不是,它最终会污染当前的范围...
这些是ES6旨在解决的一些问题。所以,现在,新的程序员进来,尝试以错误的方式调用类,并且繁荣:TypeError。没有污染范围,没有意外行为。
答案 1 :(得分:0)
您在第5行上犯了一个错误:
class User {
constructor(first, last){
if ( this instanceof User ) {
this.name = first + " " + last;
} else // bad line
return new User(first, last);
}
}
}