javascript 在没有构造函数的情况下向ES7中的类传递数据

ijxebb2r  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(157)

我尝试使用新的ES7语法将属性传递给类,而不使用构造函数。
我知道我们可以用一个构造函数传入这个函数:

class MyClass {
    constructor(pacman) {
        this.pacman = pacman;
    }
}
...
const myInstance = new MyClass({food:'........'});

但是,我们如何在ES7中使用“无构造函数”语法来实现这一点呢?
失败代码:

class MyClass {
    static pacman; // undefined
    pacman = this.pacman; // undefined
    this.pacman = pacman; // Syntax error: unexpected token .
    pacman = this.pacman.bind(this); // Cannot read property 'bind' of undefined
}
...
const myInstance = new MyClass({food:'........'});
unftdfkk

unftdfkk1#

但是,我们如何在ES7中使用“无构造函数”语法来实现这一点呢?
ES2016中没有无构造函数语法。如果您参考仍处于实验阶段的class fields proposal:一个类字段只适用于初始化为每个示例的相同值的东西,它不能依赖于传递给构造函数的任何东西。这就是你需要一个constructor的地方。只有在那里你才能声明参数并使用它们来引用构造函数的参数。

xqnpmsa8

xqnpmsa82#

我相信ES7只是在ES6已有的功能基础上增加了一些额外的功能。要给予参数,您仍然需要使用constructors。使用ES7的额外好处是,现在您不必担心将在**数组函数(方法)**中使用的this

class Human{
          constructor(name,gender){
          this.name = name;
          this.gender = gender;
        };
        namegenderPrint = () =>{
          console.log(`${this.name} has the gender which is ${this.gender}`);
        }
    };

    const printme = new Human("Giggity","Male");
    printme.namegenderPrint();

相关问题