JavaScript:.extend 和 .prototype 是用来做什么的?
2022-08-30 04:43:48
我对JavaScript相对较新,并且不断在我使用的第三方库中看到.extend和.prototype。我认为这与原型javascript库有关,但我开始认为事实并非如此。这些是用来做什么的?
我对JavaScript相对较新,并且不断在我使用的第三方库中看到.extend和.prototype。我认为这与原型javascript库有关,但我开始认为事实并非如此。这些是用来做什么的?
Javascript的继承是基于原型的,因此您可以扩展对象的原型,例如Date,Math,甚至是您自己的自定义对象。
Date.prototype.lol = function() {
alert('hi');
};
( new Date ).lol() // alert message
在上面的代码片段中,我为所有 Date 对象(已经存在的对象和所有新对象)定义了一个方法。
extend
通常是一个高级函数,它复制要从基类扩展的新子类的原型。
所以你可以做这样的事情:
extend( Fighter, Human )
并且构造函数/对象将继承 的原型,因此,如果您定义了诸如 和 on 之类的方法,那么也会继承这些方法。Fighter
Human
live
die
Human
Fighter
更新的说明:
“高级函数”意味着.extend不是内置的,但通常由jQuery或Prototype等库提供。
.extend()
由许多第三方库添加,以便从其他对象轻松创建对象。有关一些示例,请参阅 http://api.jquery.com/jQuery.extend/ 或 http://www.prototypejs.org/api/object/extend。
.prototype
指的是对象的“模板”(如果你想这样称呼它),所以通过向对象的原型添加方法(你在添加到字符串,日期,数学甚至函数的库中看到很多),这些方法被添加到该对象的每个新实例中。