javascript解释中的原型可重用性

时间:2016-08-16 07:42:29

标签: javascript jquery

我通过浏览多个网站教程而感到困惑,现在无法找到以下两个语句之间的区别; (假设Person是Employee的超级类/函数)

Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;

我知道第一行显示一个Employee REFERENCE指向Person构造函数。 Person的构造函数由 Object.create()创建。 第二个是简单地创建一个Employee构造函数。

让我知道我是不是一个java程序员,发现javascript令人困惑。

1 个答案:

答案 0 :(得分:2)

javascript中的原型就像java中的类一样。所以代码:

Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;

意思是:

class Employee inherits new Person() { // meaning of first line
    Employee constructor = Employee    // meaning of second line
}

在经典的javascript中,没有类,而是有构造函数。构造函数只是一个常规函数,可以通过new myFunction()而不是myFunction()来调用。

而不是属于类的构造函数,在javascript中,原型(类类对象)是构造函数的属性。是的,函数就像javascript中的任何其他东西一样,因此它们可以像任何其他对象一样拥有属性。

另外,在javascript构造函数中不能继承构造函数(不要傻:D)。相反,构造函数继承自对象(严格来说,对象继承自对象,因为在调用构造函数时会发生继承)。这就是为什么我们创建一个超类对象的实例 - 使它成为一个对象,以便我们可以继承。

从技术上讲,行Employee.prototype.constructor不是必需的。第一行是设置继承所需的全部内容。