在JavaScript中,自定义类型通常通过函数或类来实现。由于JavaScript是一种基于原型的语言,它使用原型链来实现继承。不过,自ES6(ECMAScript 2015)起,引入了`class`关键字,使得创建和使用自定义类型变得更加接近传统面向对象编程语言的风格。
### 使用函数和原型链
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
};
const person1 = new Person('Alice', 30);
person1.greet(); // 输出: Hello, my name is Alice and I'm 30 years old.
### 使用ES6的`class`
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
const person2 = new Person('Bob', 25);
person2.greet(); // 输出: Hello, my name is Bob and I'm 25 years old.
在ES6的`class`中,`constructor`方法是类的构造函数,用于初始化新创建的对象。其他方法则定义在类的原型上,和通过函数和原型链的方式相似。不过,使用`class`语法更加简洁和易于理解。
这两种方法都可以用来在JavaScript中创建自定义类型,并可以根据需要扩展属性和方法。