ES5中的仿类结构
JS
在 ES5
及更早版本中都不存在类。与类最接近的是:创建一个构造器,然后将方法指派到该构造器的原型上。这种方式通常被称为创建一个自定义类型。例如:
function PersonType(name) {
this.name = name;
}
PersonType.prototype.sayName = function() {
console.log(this.name);
};
let person = new PersonType("Nicholas");
person.sayName(); // outputs "Nicholas"
console.log(person instanceof PersonType); // true
console.log(person instanceof Object); // true
此代码中的 PersonType
是一个构造器函数,并创建了单个属性 name
。sayName()
方法被指派到原型上,因此在 PersonType
对象的所有实例上都共享了此方法。接下来,使用 new
运算符创建了 PersonType
的一个新实例 person
,此对象会被认为是一个通过原型继承了 PersonType
与 Object
的实例。
这种基本模式在许多对类进行模拟的 JS
库中都存在,而这也是 ES6
类的出发点。