伪古典继承
它是使用原型继承来模拟经典继承 ,它展示了原型的强大程度。它的目的是使语言对来自其他语言的程序员更具吸引力。
Version < 6
重要说明 :由于语言模拟了传统的类, 因此 ES6 使用伪 calssical 继承是没有意义的。如果你不使用 ES6,你应该 。如果你仍然想使用经典继承模式并且你处于 ECMAScript 5 或更低版本的环境中,那么伪经典是你最好的选择。
class
只是一个用 new
操作数调用的函数,它被用作构造函数。
function Foo(id, name) {
this.id = id;
this.name = name;
}
var foo = new Foo(1, 'foo');
console.log(foo.id);
控制台输出
1
foo 是 Foo 的一个实例。JavaScript 编码约定说如果函数以大写字母开头,它可以被称为构造函数(使用 new
操作数)。
要向类添加属性或方法,你必须将它们添加到它的原型中,该原型可以在构造函数的 prototype
属性中找到。
Foo.prototype.bar = 'bar';
console.log(foo.bar);
控制台输出
bar
事实上,Foo 作为构造函数所做的只是使用 Foo.prototype
创建对象,因为它是原型。
你可以在每个对象上找到对其构造函数的引用
console.log(foo.constructor);
function Foo(id, name){…
console.log({ }.constructor);
function
Object()
{[native code]}
并且还使用 instanceof
运算符检查对象是否是给定类的实例
console.log(foo instanceof Foo);
真正
console.log(foo instaceof Object);
真正