JavaScript 伪古典继承

示例

它是使用原型继承对经典继承的仿真,它显示了原型的强大功能。这样做是为了使该语言对来自其他语言的程序员更具吸引力。

6

重要说明:自ES6起,使用伪calscalsical继承没有意义,因为该语言模拟常规类。如果您不使用ES6,则应该使用。如果您仍想使用经典继承模式,并且您处于ECMAScript 5或更低版本的环境中,那么最好选择伪古典。

“类”只是一个由new操作数调用的函数,它用作构造函数。

function Foo(id, name) {
   this.id= id;
   this.name= name;
}

var foo = new Foo(1, 'foo');
console.log(foo.id);

控制台输出

1

foo是Foo.TheJavaScript编码约定的一个实例,它表示如果函数以大写字母开头,则可以将其称为构造函数(带有new操作数)。


要向“类”添加属性或方法,您必须将其添加到其原型中,该原型可以prototype在构造函数的属性中找到。

Foo.prototype.bar = 'bar';
console.log(foo.bar);

控制台输出

酒吧

实际上,Foo作为“构造函数”所做的只是使用Foo.prototype其原型创建对象。


您可以在每个对象上找到对其构造函数的引用

console.log(foo.constructor);

功能Foo(id, name){...

console.log({ }.constructor);

函数Object(){[本地代码]}

并使用instanceof运算符检查对象是否为给定类的实例

console.log(foo instanceof Foo);

真正

console.log(foo instaceof Object);

真正