JavaScript:.extend 和 .prototype 是用来做什么的?

2022-08-30 04:43:48

我对JavaScript相对较新,并且不断在我使用的第三方库中看到.extend和.prototype。我认为这与原型javascript库有关,但我开始认为事实并非如此。这些是用来做什么的?


答案 1

Javascript的继承是基于原型的,因此您可以扩展对象的原型,例如Date,Math,甚至是您自己的自定义对象。

Date.prototype.lol = function() {
 alert('hi');
};

( new Date ).lol() // alert message

在上面的代码片段中,我为所有 Date 对象(已经存在的对象和所有新对象)定义了一个方法。

extend通常是一个高级函数,它复制要从基类扩展的新子类的原型。

所以你可以做这样的事情:

extend( Fighter, Human )

并且构造函数/对象将继承 的原型,因此,如果您定义了诸如 和 on 之类的方法,那么也会继承这些方法。FighterHumanlivedieHumanFighter

更新的说明:

“高级函数”意味着.extend不是内置的,但通常由jQuery或Prototype等库提供。


答案 2

.extend()由许多第三方库添加,以便从其他对象轻松创建对象。有关些示例,请参阅 http://api.jquery.com/jQuery.extend/ 或 http://www.prototypejs.org/api/object/extend

.prototype指的是对象的“模板”(如果你想这样称呼它),所以通过向对象的原型添加方法(你在添加到字符串,日期,数学甚至函数的库中看到很多),这些方法被添加到该对象的每个新实例中。