解开Ajax技术生命中的达芬奇密码

ajax

  现在,Ajax技术发展势头迅猛,开发者已经建立了一个调用大量客户端javascript、不断增长的、复杂的系统。因此,在JavaScript上尝试OO技术便成为了管理复杂性的一种手段。在此过程中,多数开发者很快便认识到:JavaScript是一种原型化的(prototypical)语言,它缺少OO自身带来的多种便利。

  几乎每位在开发JavaScript时尝试应用面向对象技术的开发者,或多或少都会问自己一个问题:“如何调用父类(super class)的方法?”在Ajax技术还没有目前这样炙手可热之前,这种问题很少出现,因为大多数开发者仅在进行客户端form验证或者简单的DHTML/DOM操作时使用JavaScript。在那些简单的解决方案中,函数式编程(functional programming)是很有意义的,面向对象编程则处在次之重要的位置。

  现在,Ajax技术发展势头迅猛,开发者已经建立了一个调用大量客户端JavaScript、不断增长的、复杂的系统。因此,在JavaScript上尝试OO技术便成为了管理复杂性的一种手段。在此过程中,多数开发者很快便认识到:JavaScript是一种原型化的(prototypical)语言,它缺少OO自身带来的多种便利。

  OO设计的主旨和关于它的一些话题谈起来很大,但只着眼于Class的定义方式,我认为它是JavaScript开发者尝试解决问题的首选。因此,你可以在互联网上找到许多不同的问题解决案例,但在我看过它们后不免有些失望——这些案例都是在某个场合下适用,而不是放之四海而皆准的通法。而我对这个话题的兴趣来自于我的team在开发 ThinWire Ajax Framework 的影响。

  由于这个框架生成出对客户端代码的需求,才使我们“被迫”去实现可靠的、支持父类方法调用的OO模式。通过父类调用,你可以进一步依靠类的继承特性来核心化通用代码,从而更易于减少重复代码,去掉客户端代码的坏味道。

  下面罗列出了一些在我的研究过程中遇到的解决方式。最终,我没有从中找出一个可以接收的解决方案,于是我不得不实现一个自己的解决方案,你将在本文的结尾部分看到这个方案。

  然而父类调用在这里是最重要的OO机制,因此我需要一个相应的工作模式,也正是因为在我的观点中原型化方式是丑陋的,所以我更需要一种更加自然地使用JavaScript定义类的方法。

  More Solutions:

  好吧,让我们进入讨论。正如开发者所察觉的那样,在JS中实现基本的继承是很容易的事,事实上有一些众所周知的方法:

  丑陋的Solution:

  没有进行父类调用的简单继承:

// 提前写好的JavaScript Class定义和继承
// 当然,这种代码很丑陋,散发着代码的坏味道。
function BaseClass() {
    //BaseClass constructor code goes here
}

BaseClass.prototype.getName = function() {
    return "BaseClass";
}

function SubClass() {
    //SubClass constructor code goes here
}

//Inherit the methods of BaseClass
SubClass.prototype = new BaseClass();

//Override the parent's getName method
SubClass.prototype.getName = function() {
    return "SubClass";
}

//Alerts "SubClass"
alert(new SubClass().getName());
 

  导致 IE内存泄露 的Solution:

  这种实现方式能够导致在IE中的内存泄漏,你应该尽量避免:

// 运行时的JavaScript Class 定义和继承
// 看上去很传统,但这些脚本会导致在Internet Explorer中的内存泄漏.
function BaseClass() {
    this.getName = function() {
        return "BaseClass";
    };   

    //BaseClass constructor code goes here
}

function SubClass() {
    //在对象实例建立时重载父类的getName方法
    this.getName = function() {
        return "SubClass";
    }

    //SubClass constructor code goes here
}

//Inherit the methods of BaseClass
SubClass.prototype = new BaseClass();

//Alerts "SubClass"
alert(new SubClass().getName());
 

  就像我在第一个实现方法中所注释的那样,第一个实现方法有些丑陋,但它相比引起内存泄漏的第二种方式便是首选了。

  我把这两种方法放在这里的目的是指出你不应该使用它们。

时间: 2024-08-26 00:39:41

解开Ajax技术生命中的达芬奇密码的相关文章

解开Ajax技术中的达芬奇密码

现在,Ajax技术发展势头迅猛,开发者已经建立了一个调用大量客户端javascript.不断增长的.复杂的系统.因此,在JavaScript上尝试OO技术便成为了管理复杂性的一种手段.在此过程中,多数开发者很快便认识到:JavaScript是一种原型化的(prototypical)语言,它缺少OO自身带来的多种便利.       几乎每位在开发JavaScript时尝试应用面向对象技术的开发者,或多或少都会问自己一个问题:"如何调用父类(super class)的方法?"在Ajax技术

破解戴尔的达芬奇密码:广告,实用第一

背景:07年结束之际,麦迪逊大街出现的一件大事,是戴尔电脑选择WPP为其全球广告和http://www.aliyun.com/zixun/aggregation/39658.html">营销服务的唯一代理商,过去戴尔每年约15亿美元的品牌传播预算被800多家服务商所分享,而如今花落WPP一家.WPP计划成立的机构将有1,000名员工,分别来自WPP集团内部或外聘,这个计划在随后的三至六个月间完成,目前称为"达芬奇计划". 行业一直在议论戴尔与WPP合作创立一家整合营销和

达芬奇“案中案”孰是孰非:造假门远不是故事全部

达芬奇家居"案中案" 这就是轰动一时的"达芬奇造假门",但这远不是故事的全部 原本是一场普通的消费者与商家纠纷.然而,消费者找到电视台投诉,媒体周密部署,化装暗访,商家随即陷入"造假售假"的舆论漩涡. 这就是轰动一时的"达芬奇造假门",但这远不是故事的全部. 不远万里的背书 这是2011年11月19日,一个星期六的下午.北京友谊商店的达芬奇家居旗舰店里,顾客屈指可数.TinoCappelletti,卡布丽缇总裁:http://

京华时报总经理崔斌被免职 被爆收达芬奇300万公关费

京华时报总经理崔斌 来源:资料图 <http://www.aliyun.com/zixun/aggregation/23365.html">京华时报>总经理崔斌今日被免职.他负责的传媒中国网近日也已经悄然关闭. 据媒体此前报道,崔斌在达芬奇事件中担当达芬奇方面与媒体记者中间人,他的传媒中国网因此获得300万元公关费用.2011年7月10日中央电视台<每周质量报告>播出"达芬奇'密码'"后,达芬奇家居经人介绍,找到曾在多家国内媒体担任高层职务的文化

京华时报崔斌被免被曝收达芬奇公关费

京华时报总经理崔斌 来源:资料图TechWeb编辑推荐:中国网1月6日讯 <京华时报>总经理崔斌今日被免职.他负责的传媒中国网近日也已经 悄然关闭.据媒体此前报道,崔斌在达芬奇事件中担当达芬奇方面与媒体记者中间人,他的传媒中国网因此获得300万元公关费用.2011年7月10日中央电视台<每周质量报告>播出"达芬奇'密码'"后,达芬奇家居经人介绍,找到曾在多家国内媒体担任高层职务的文化中国传播集团(01060.HK)总裁崔斌寻求帮助.7月14日,达芬奇家居董事黄志

央视曝光达芬奇问题家具部分产品涉嫌伪造产地

昨晚,位于北京建国门外大街的达芬奇家居依然灯火辉煌.晨报记者 王巍/摄 图片/央视截屏 30多万元的"意大利双人床"."意大利沙发",产地竟然在东莞.央视<每周质量报告>昨日 曝光了以销售天价家具而闻名的达芬奇公司,揭开了达芬奇家具背后的"密码". 近年来,从香武仕音响到欧典地板,假冒洋品牌可谓是层出不穷.如今,"一分钱一分货"的消费名言,在天价的达芬奇家具面前轰然倒下. 央视曝光 事发:天价家具散发刺鼻异味 北京

达芬奇道歉信未提及退换货消费者称看不出真情

达芬奇道歉信 本报讯 (记者 袁国礼) 达芬奇家居事件又有新进展--昨天下午,达芬奇家居方面在微博上发出公开道歉信,称"公开向消费者道歉,并将对产品标注问题开展内部清查整顿".有消费者认为,"达芬奇的道歉信中丝毫未提及消费者最为关心的退换货问题,看不出道歉的真情". 这封落款为达芬奇家居股份有限公司的公开道歉信,发布在北京达芬奇家居公司的新浪微博上以及其官方网站上. 记者看到,在这份公开信中,达芬奇家居仍自称是国际品牌家居连锁店,并表示,对于媒体就某些产品的产地标注

达芬奇激烈翻案只因伤不起专家称双方都有失偏颇

"复出"后的达芬奇家居很高调.继"严重声明"之后,11月25日,达芬奇又给媒体发来一封"就广东卫视以虚假新闻诬赖达芬奇的公开回复",称已向广东卫视在发出<律师函>,若三日之内广东卫视不公开道歉,将对其提出起诉. 在公开回复中,达芬奇指出,广东卫视的报道属于违法,当事记者的"诱导"询问也严重违反了国家关于新闻报道的相关规定.同时还指出,广东卫视<广东早晨>栏目的监制张毅在收到<律师函>后主动与

达芬奇杭州专卖店被查封供货商称出厂价仅几千元

据新华社.中央人民广播电台报道 杭州市工商局披露,达芬奇家居位于杭州的专卖店由于标签标注不规范已被要求整改,目前该店因为消防原因已被查封.记者还了解到,家具市场虚假标注乱象由来已久,今年年初浙江相关部门市场抽检发现,标称"实木家具"的家具检测合格率为零. 标签标注不规范 达芬奇家居目前在北京.上海.广州.深圳.成都.重庆.杭州.香港等地有分公司和专卖店,其中杭州专卖店位于南山路元华边上,营业面积4000平方米,附近有劳斯莱斯.兰博基尼等奢侈品展厅. 杭州市工商局上城分局执法人员在达芬奇