凉风有信,秋月无边。
亏我思娇的情绪好比度日如年。

javascript 类表达式

《javascript 类表达式》正文开始,本次阅读大概3分钟。

Javascript 中的类表达式是一种用于创建对象的语法。

与传统的类定义语法相比,类表达式的语法更加灵活,可以在任意的代码块中定义类,并且可以将类作为参数或返回值来进行传递。

let Animal = class {
constructor(name) {
this.name = name;
}
sound() {
console.log('我会叫');
}
};
let cat = new Animal('小猫');
console.log(cat.name);
cat.sound();

在上面的代码中,我们使用了一个类表达式传递了一个类作为参数。在这个例子中,我们定义了一个名为“Animal”的类,它包含一个构造函数和一个名为“sound”的方法。我们通过“new”关键字创建了一个名为“cat”的对象,并且可以通过“cat.name”和“cat.sound()”来调用它们。

与传统的类定义语法相比,类表达式所定义的类是匿名的,因此我们可以将其赋值给一个变量或对象的属性中。

let Animal = class {
constructor(name) {
this.name = name;
}
sound() {
console.log('我会叫');
}
};
let cat = {
type: 'pet',
action: new Animal('小猫')
};
console.log(cat.action.name);
cat.action.sound();

在上面的代码中,我们将我们的 “Animal” 类保存到对象“cat.action”中,并且可以像上面一样调用它。

如果您只需要一个类表达式来创建一个单一对象,则可以省略类名,直接使用“new”关键字,并在大括号内添加类的构造函数和属性/方法。

let cat = new class {
constructor(name) {
this.name = name;
}
sound() {
console.log('我会叫');
}
}('小猫');
console.log(cat.name);
cat.sound();

在上面的代码中,我们使用一个直接从类表达式创建的对象,省略了类名。我们在新建立的对象中设置了“name”属性,并通过“sound()”方法来调用“console.log”。

类表达式也可以与闭包结合使用来创建“私有变量”。

let Cat = (function () {
let mood = 'happy';
class Cat {
constructor(name) {
this.name = name;
}
sound() {
console.log('我会叫');
}
getMood() {
return mood;
}
}
return Cat;
}());
let cat = new Cat('小猫');
console.log(cat.getMood());

由于类表达式是一个表达式,因此您可以任意嵌套它们。

let Cat = class {
constructor(name) {
this.name = name;
}
sound() {
console.log('我会叫');
}
};
let Home = class {
constructor(name) {
this.name = name;
}
welcome() {
console.log('欢迎回家');
}
getCat() {
return new Cat('小猫');
}
};
let home = new Home('我的家');
let cat = home.getCat();
console.log(cat.name);

上面的代码中,“Cat” 和 “Home” 都是类表达式。我们在 “Home” 类中定义了一个方法,该方法返回一个从 “Cat” 类创建的新实例,并且可以在主要代码中调用。这使得代码更灵活,因为您可以在任何地方使用类表达式。

因此,类表达式是一种非常有用的 JavaScript 语法结构,因为它提供了极高的灵活性,可以在任何地方定义类,并且可以将这些类作为参数和返回值进行传递。

赞(21)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的内容,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。本博客资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。如果本文导致的版权问题以及内容纠错问题请联系站长QQ:1004619 | 点此给我发送邮件
本文标题:javascript 类表达式
本文地址:https://www.1004619.com/nn/javascriptlbds.html