加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

jQuery1.3.2源码学习5:jQuery 中的原型

发布时间:2018-10-20 18:13:17 所属栏目:业界 来源:站长网
导读:原型 prototype 在 Java Script 中,每个函数工具都有一个默认的属性 prototype,称为函数工具的原型成员,这个属性指向一个工具,称为函数的原型工具,当我们每界说了一个函数的时辰,JavaScript 就建设了一个对应的原型工具,也就是说,当我们界说一个函

原型 prototype

JavaScript 中,每个函数工具都有一个默认的属性 prototype,称为函数工具的原型成员,这个属性指向一个工具,称为函数的原型工具,当我们每界说了一个函数的时辰,JavaScript 就建设了一个对应的原型工具,也就是说,当我们界说一个函数的时辰,现实上获得了两个工具,一个函数工具,一个原型工具。原型工具是一个非凡的工具,函数的 prototype 成员指向它的原型工具。

可以通过函数工具的 prototype 成员取得这个原型工具的引用。

下面界说一个函数工具 Person,然后通过 prototype 来取得它的原型工具。然后在它的原型工具上界说了一个要领。

function Person()

{

}

Person.prototype.showPerson = function()

{

alert( “Person Object.”);

}

var alice = new Person();

alice.showPerson();

这个原型工具上界说的成员将用来共享给全部通过这个函数建设的工具行使。相等于 C# 中的实例要领,工具,函数和原型在内存中的相关如下图所示:

jQuery 中的原型

每个工具也都有一个原型成员 prototype,通过 new 函数建设的工具会通过函数的 prototype 找到函数的原型,然后将本身的原型指向这个工具。对付不是通过函数建设的工具实例和原型工具,它们的原型会被配置为 Object 函数的原型工具。

Object 函数工具是 JavaScript 中界说的顶级函数工具,在 JavaScript 中全部的工具都直接可能间接地行使 Object 工具的原型。

当会见工具的属性可能要领的时辰,假如工具自己没有这个属性可能要领,那么,JavaScript 会搜查工具的 prototype 工具是否拥有这个属性可能要领,假若有,则作为工具的属性可能要领返回,假如没有,那么将通过原型工具的 prototype 继承举办搜查,直到原型工具为 Object 函数的原型工具为止。

可是 prototype 是一个非凡的属性,在大大都的赏识器上,譬喻 IE 赏识器,都不能直接会见工具的 prototype 成员。返回的功效为 undefined。不能赋予工具一个新的原型,只能通过建设它的函数来确定工具的原型。

函数工具的原型有一个非凡的用途,就是通过函数 new 建设出来的工具,会自动将函数工具的原型赋予新建设出的工具的原型。这样,假如为某个函数配置了原型工具,那么,全部通过这个函数建设的工具将拥有同样的原型工具。通过这个要领,可以使这些工具共享沟通的属性可能要领,来模仿范例的观念。

jQuery 中,我们常常行使的 $ 函数就是界说在 window 工具上的 $ 函数。

其代码如下:

24 jQuery = window.jQuery = window.$ = function( selector, context ) {

25 // The jQuery object is actually just the init constructor 'enhanced'

26 return new jQuery.fn.init( selector, context );

27 },

这个函数现实上通过 new jQuery.fn.init( selector, context )来完成,也就是通过 init 函数建设了一个工具。

在 541 行从头指定了函数 init 的原型工具。以是 init 函数的原型工具就是 fn 工具。

540 // Give the init function the jQuery prototype for later instantiation

541 jQuery.fn.init.prototype = jQuery.fn;

这样全部通过 $ 建设出来的工具都将共享 fn 工具上的成员。因此,jQuery 工具都有了相同 attr 、html 等等要领了。

参考资料:

李战 悟透javascript

来历:博客园

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读