gpt4 book ai didi

javascript - JavaScript 解释中的原型(prototype)可重用性

转载 作者:行者123 更新时间:2023-12-03 06:18:29 25 4
gpt4 key购买 nike

通过浏览多个网站教程,我有点困惑,现在找不到以下两个语句之间的区别; (假设 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com