浅谈javascript的原型继承

浅谈javascript的原型继承

ID:37781254

大小:28.50 KB

页数:5页

时间:2019-05-31

浅谈javascript的原型继承_第1页
浅谈javascript的原型继承_第2页
浅谈javascript的原型继承_第3页
浅谈javascript的原型继承_第4页
浅谈javascript的原型继承_第5页
资源描述:

《浅谈javascript的原型继承》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、javascript的继承在很多框架中都有运用,尤其是原型式继承。首先要理解一个概念,什么是原型式继承?所谓的原型式继承,就是在函数内部先创建一个临时性的构造函数,然后将传入的对象做这个构造函数的原型,最后返回这个临时类型的新实例请看源码:复制代码代码如下:functionclone(o){varF=function(){};F.prototype=o;returnnewF();}首先看ext(4.1的1896行开始)的原型式继承。复制代码代码如下:varTemplateClass=function(){};va

2、rExtObject=Ext.Object={chain:function(object){TemplateClass.prototype=object;varresult=newTemplateClass();TemplateClass.prototype=null;returnresult;}}这里清除了object的prototype。再看一下jquery是怎么玩的继承。复制代码代码如下:varjQuery=function(selector,context){returnnewjQuery.fn.init

3、(selector,context,rootjQuery);};-----------------------jQuery.fn=jQuery.prototype={constructor:jQuery,init:function(selector,context,rootjQuery){-----------------------}}-------------------jQuery.fn.init.prototype=jQuery.fn;jquery玩的就比较高,借助jQuery.fn.init来完成,但是

4、思路一样。司徒正美的mass里也有类似的继承,在lang_fix.js里面第17行:复制代码代码如下:create:function(o){if(arguments.length>1){$.log("Object.createimplementationonlyacceptsthefirstparameter.")}functionF(){}F.prototype=o;returnnewF();}查看了一下es5的官方,找到了他的兼容补丁:复制代码代码如下://ES515.2.3.5//http://es5.gi

5、thub.com/#x15.2.3.5if(!Object.create){Object.create=functioncreate(prototype,properties){varobject;if(prototype===null){object={"__proto__":null};}else{if(typeofprototype!="object"){thrownewTypeError("typeofprototype["+(typeofprototype)+"]!='object'");}varTyp

6、e=function(){};Type.prototype=prototype;object=newType();//IEhasnobuilt-inimplementationof`Object.getPrototypeOf`//neither`__proto__`,butthismanuallysetting`__proto__`will//guaranteethat`Object.getPrototypeOf`willworkasexpectedwith//objectscreatedusing`Object

7、.create`object.__proto__=prototype;}if(properties!==void0){Object.defineProperties(object,properties);}returnobject;};}上面的代码考虑的就比较全面,但是需要另外引入Object.defineProperties的补丁才行,源码相对就比较多了。复制代码代码如下://ES515.2.3.6//http://es5.github.com/#x15.2.3.6//PatchforWebKitandIE8s

8、tandardmode//Designedbyhax//relatedissue:https://github.com/kriskowal/es5-shim/issues#issue/5//IE8Reference://http://msdn.microsoft.com/en-us/library/dd282900.aspx//http:/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。