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

理解JavaScript中的设计模式

发布时间:2018-04-16 00:54:26 所属栏目:编程 来源:伯乐在线
导读:副标题#e# 可靠的设计模式是可维护软件的基石,如果你曾参与技术面试,很有可能被问到关于设计模式的这类东西。下面这个指南中,我们将学习一些今天就可以用得着的设计模式。 什么是设计模式? 简单来说,设计模式就是对特定类型问题重用的软件解决方案,这

属性(方法)在Person对象中应用到了tilo对象的原型,我们可以重新定义在tilo对象中的属性,如果我们想要它不一样的话。上面例子中,我们使用Object.create(),然而,IE8中不支持这个比较新的方法,在这种情况下,我们可以模拟他的行为:

var vehiclePrototype = {

init: function (carModel) {

this.model = carModel;

},

getModel: function () {

console.log( “The model of this vehicle is ” + this.model);

}

};

function vehicle (model) {

function F() {};

F.prototype = vehiclePrototype;

var f = new F();

f.init(model);

return f;

}

var car = vehicle(“Ford Escort”);

car.getModel();

唯一不好的地方就是这个方法你没法指定为可读的属性,而使用Object.create()时可以指定。不管怎样,原型模式展示了对象如何继承自其它对象。

结构化模式:

结构化设计模式在当你想理解一个系统如果工作的时候显得非常有帮助。它能使应用扩展方便,维护方便。我们将讨论以下两种模式:组合模式和门面模式

组合模式:

组合模式可以理解为一个对象的组合可以像单个对象一样以一致的方式处理。这是什么意思呢?好吧,考虑下面这个例子:

$(‘.myList’).addClass(‘selected’);

$(‘#myItem’).addClass(‘selected’);

//dont do this on large tables, it‘s just an example.

$(“#dataTable tbody tr”).on(“click”, function(event){

alert($(this).text());

});

$(’#myButton‘).on(“click”, function(event) {

alert(“Clicked.”);

});

很多JavaScript库提供了一致的API,不论是处理单个DOM元素还是一个DOM元素的数组。我们可以添加selected 类给所有含.myList的选择器的元素。同样我们可以使用相同的方法处理相似的DOM元素#myItem,类似的,我们可以使用on()方法附上事件处理器在多个节点或单个节点上。

门面模式:

隐藏内部复杂结构,提供给用户简单接口使用。

门面模式几乎总是可以改善大部分软件的可用性。使用jQuery作为例子,一个最受欢迎的方法ready():

$(document).ready(function() {

//all your code goes here...

});

ready()方法就实现的门面模式,如果你去查看源代码,你将发现:

ready: (function() {

......

//Mozilla, Opera, and Webkit

if (document.addEventListener) {

document.addEventListener(“DOMContentLoaded”, idempotent_fn, false);

....

}

//IE event model

else if (document.attachEvent) {

// ensure firing before onload; maybe late but safe also for iframes

document.attachEvent(“onreadystatechange”, idempotent_fn);

// A fallback to window.onload, that will always work

window.attachEvent(“onload”, idempotent_fn);

...

}

})

ready()方法并不简单,jQuery规范游览器的一致性确保ready()在合适的时间被触发。然而,作为一名开发者,你应该用简单的接口展示出来。

总结:设计模式最让人鼓舞的是有人在过去已经成功实践了。很多开源代码实现了各种JavaScript中的是设计模式。作为程序员,我们需要意识到每种设计模式的应用场景。我希望这篇教程能帮助一步步回答这些问题。

英文原文:Tilo Mitra

文:伯乐在线

(编辑:西安站长网)

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

推荐文章
    热点阅读