【发布时间】:2019-07-04 11:14:27
【问题描述】:
是否可以通过更改“this”上下文(调用、应用或其他)在另一个实例上使用 es6 构造函数指令?这可以使用 es5“类”。这是我的意思的一个小例子:
function ES5() {
this.foo = 'foo';
}
class ES6 {
constructor() {
this.bar = 'bar';
}
}
var a = new ES6();
ES5.call(a);
console.log(a.foo + a.bar); //foobar
var b = new ES5();
//Reflect.construct(ES6); ??
ES6.call(b); //TypeError: Class constructor ES6 cannot be invoked without 'new'
console.log(b.foo + b.bar); //how to get foobar here too?
编辑: 我的问题与 new 关键字无关。我正在寻找的答案是如何使用另一个“this”上下文(带或不带 new 关键字)运行放置在 es6 构造函数中的指令。
【问题讨论】:
-
我认为这个问题不应该被关闭
-
@Chg 对“是否可以通过更改“this”上下文(调用、应用或其他)在另一个实例上使用 es6 类构造函数指令的答案?没有。合适的解决方法将取决于用例。
-
我认为你的问题是你试图在不调用构造函数的情况下创建一个
ES6对象。你试过apply而不是call吗? -
为什么要这样做?对 JavaScript 的一个流行批评是,函数和
this令人困惑,因为函数履行了多个角色。对此的回应是引入了更多特殊用途的构造,例如只能以特定方式使用的类。如果你需要做一些类不能做的事情,不要使用类。 -
这似乎是XY problem。与其寻求帮助以尝试解决您的问题,不如告诉我们您的实际问题。你到底想做什么?
标签: javascript ecmascript-6 constructor ecmascript-5