通过浏览多个网站教程,我有点困惑,现在找不到以下两个语句之间的区别; (假设 Person 是 Employee 的父类(super class)/函数)
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
据我所知,第一行显示 Employee REFERENCE 指向 Person 构造函数。 Person的构造函数是通过Object.create()创建的。 第二个只是创建了一个 Employee 构造函数。
请告诉我,作为一名 java 程序员,我是否发现 javascript 令人困惑。
最佳答案
javascript中的原型(prototype)就像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 中,原型(prototype)(类类对象)不是属于类的构造函数,而是构造函数的属性。是的,函数就像 JavaScript 中的任何其他事物一样是对象,因此它们可以像任何其他对象一样具有属性。
此外,在 javascript 构造函数中不能继承构造函数(别傻了 :D )。相反,构造函数从对象继承(严格来说,对象从对象继承,因为继承是在调用构造函数时发生的)。这就是为什么我们创建父类(super class)对象的实例 - 使其成为一个对象,以便我们可以继承。
从技术上讲,Employee.prototype.constructor
行并不是必需的。第一行是设置继承所需的全部内容。
关于javascript - JavaScript 解释中的原型(prototype)可重用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38969183/