中国法律网
法律通行证: 用户名: 密码:  注册
律师加盟热线:400-8919-913   律信通 律信通  
律师
公众 咨询 贴吧
律信通 案件委托
频道 房产 婚姻 交通事故 保险 建设工程 劳动
留学
公司 合同 刑事辩护 医疗 知识产权 工商
新闻 宽频 文书 常识 案例
法规 专题 杂志 百科 论文
查找全国各地律师: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 点击各城市名拼音首字母查找律师 公众找律师,信赖律信通!律师做宣传,首选律信通!

在JavaScript面向工具编程中行使担任(5)

时间:2014-04-22 20:53来源:互联网 作者:中国法律网 点击:
明天就要回老家去过年了,关于这个"在JavaScript面向对象编程中使用继承"的话题居然还没有说完。如果不完成,留下来一拖就拖到明年去了 。所以还是抽空把它写完,今年的事情今年做,明年还有更重要的任务呢!~~ 下面继续来看茴香豆的"茴"字第四种写法。 这"茴

    来日诰日就要回田园去过年了,关于这个"在JavaScript面向工具编程中行使担任"的话题居然还没有说完。假如不完成,留下来一拖就拖到来岁去了。以是照旧抽闲把它写完,本年的工作本年做,来岁尚有更重要的使命呢!~~ 下面继承来看茴香豆的"茴"字第四种写法。

    这"茴"字的第四种写法,附加担任法,固然是我本身杜撰出来的,并且尚有一些前面三种担任法的影子,不外这个要领不行否定的,可以把前面说到担任的题目都cut掉。下面我们就来细心说说到底它是为什么这么有武功和伶俐的呢?

    附加担任法的道理:

    附加担任法的要害代码是其构找函数ArrayList04()中的:


    这里着实给不给this附加一个base并不重要,也一点不会影响我们的这个担任要领。起首我们看到在结构函数的第一句话中,我们立马就new了一个基类实例出来,这就声名我们的担任对基类的誊写是没有任何要求的,用前面实例担任法中的说法就是,只要剧本引擎以为正确的类就都可以。我们知道结构担任法为什么有题目呢?就是由于它始终没有建设基类的实例。而原型担任法固然也建设了基类实例,不外它把蕴蓄实例直接赋给了子类的prototype属性,以至于搞的对子类誊写有非凡的要求。

    然后接下来一个for( in )轮回,把基类具有的全部属性和要领都附加到子类的实例this中了,这也是我把这个担任要领叫附加法的缘故起因。这一步和结构担任法的道理相等的相同,只是结构担任法是用了this浸染域置换的一个能力,把这个附加的进程让基类结构函数来完成了,不外同时也给结构担任法带来基类誊写的出格要求,不能行使其prototype特征。虽然附加法如故是没有这个要求的。

    附加担任法的Update:

 

    
    这样我们就的担任就可以直接写成:

 


    同时还提供了对基类担任时,转达参数给基类的支持,好比:

 


    对付基类,会执行new ListItemBase(text, value);这样的操纵来天生基类的实例。

    附加担任法的缺陷:

    从今朝我的行使来看,假如不行使override技能来重写要领,然后还在新的要领中去挪用基类的要领(这个技能我会往后再讲,由于它不影响也不属于我们本日接头的担任方法的这个话题)的话。附加法根基没有缺陷,必然要说有就的话就是:行使一个for( in )轮回来举办基类的导入,语法上很ugly:(

    附加担任法的示例:

 


    示例运行功效为:

 


    小结:附加担任法是看起来最不像担任,但却是现实行使中最sexy(PS:这是我们boss对好代码的称号)的办理方案。其override也很是的清楚明白,只要在this.Extends(BaseClass);语句后有同名的要领被导入子类,就会自动包围从基类中导入的要领,实现override的结果。

    行使场景:anywhere, anytime, anybody...

    这话好像说大了,美满的对象必然是没有的,附加担任法也是有缺陷的,只不外这个缺陷不属于担任这个领域,而是对其余OO编程特征的模仿中呈现的题目,往后再谈。再唐僧一下:光是类的担任和行使,附加担任法是没有任何题目的。

    总算完成了JScript模仿面向工具编程中实现担任的各类研究。

    The End.

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片
栏目列表
推荐内容
中国法律网 版权所有 邮箱:service@5Law.cn 建议使用:1024x768分辨率,16位以上颜色 | 京ICP备2023040428号-1联系我们 有事点这里    [切换城市▲] 公司法
400-8919-913 工作日:9:00-18:00
周 六:9:00-12:00

法律咨询5分钟内回复
请用微信扫描二维码
关闭

关注网站CEO微信,与CEO对话