![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
文章平均质量分 73
爱德酱
UESTC CS研究生
展开
-
js洗牌算法实现产生随机数组
在学习排序算法的时候,经常要用到随机数组,于是就写了一个生成随机数组的方法。算法来自网络,只是修改成了 JavaScript 版本。基本原理是洗牌算法,首先从所有元素中随机选取一个与第一个元素进行交换,然后在第二个之后选择一个元素与第二个交换,直到最后一个元素。这样能确保每个元素在每个位置的概率都是1/n。具体代码如下:12345678910111213转载 2017-04-19 15:04:36 · 2987 阅读 · 0 评论 -
JavaScript设计模式之中介模式
中介者模式该模式会缓解对象之间的耦合度,将紧耦合转换成松耦合代码示例,实现一个键盘游戏,有两个玩家。规定一个人按‘1’,一个人按‘0’。//玩家对象function Player (name) { this.points = 0; this.name = name;}Player.prototype.play = function () { this.points +=原创 2017-05-22 17:23:03 · 286 阅读 · 0 评论 -
JavaScript设计模式之观察者模式
观察者模式(订阅发布模式)该模式广泛应用于客户端程序//通用发布者对象var publisher = { subsribers: { any: []//通用订阅者方法 }, subscribe: function (fn,type) { type = type || 'any'; if(!this.subscribers[type]原创 2017-05-22 17:25:05 · 314 阅读 · 0 评论 -
JavaScript设计模式之代理模式
代理模式中介模式合并多个复杂业务请求,减轻web服务器压力页面框架<p><span id='toggle-all'>Toggle Checked</span></p><ol> <li> <input type="checkbox" checked> <a href="http://new.music.yahoo.com/videos/--2158073"></a> </li原创 2017-05-22 17:21:12 · 274 阅读 · 0 评论 -
JavaScript设计模式之外观模式
外观模式外观模式包装重复方法,浏览器脚本处理Myevent = { ... Stop:function (e) { if(typeof stopPropagation === 'function'){ e.stopPropagation(); } if(typeof preventDefault === 'fun原创 2017-05-22 17:19:46 · 311 阅读 · 0 评论 -
JavaScript设计模式之策略模式
策略模式策略模式支持运行时选择算法,客户端只需要一个接口,可以根据不同的数据和业务需求,接口内部会选择不同的算法去适应。validator = { types:{},//所有检查方法 messages:[],//错误信息数组 config:{},//需要验证的方法集 validate:function (data) { //验证方法 var I,原创 2017-05-22 17:18:45 · 270 阅读 · 0 评论 -
javascript设计模式之单体模式
javascript设计模式之单体模式单体模式属于js设计模式中的创建对象型模式,它保证一个特定类只会有一个实例当我们使用对象字面量的语法创建对象时,自然是一个单体;当我们使用构造器创建对象时,我们通常有两种方法去实现单体模式第一种是使用全局变量做当前对象的保存第二种是使用构造器的静态属性,代码如下:Function Universe () { if(typeof Universe.in原创 2017-05-17 17:18:54 · 340 阅读 · 0 评论 -
javascript设计模式之工厂模式
javascript设计模式之工厂模式js的设计模式分为创建型模式,结构型模式和行为模式创建型模式描述了对象创建和初始化的事情。工厂模式是一种常见的创建型模式,该模式可以应用于创建多个相似对象我们又不知道该先使用哪个对象时的场景下:下面是示例代码:MYJS.dom.factory = function (type,url){ return MYJS.dom[type] ? new MYJS.d原创 2017-05-02 15:14:38 · 309 阅读 · 0 评论 -
javascript设计模式之装饰器模式
javascript设计模式之装饰器模式装饰器模式是一种结构型模式有两种常见的实现方法第一种是利用原始对象原型的decorate方法,实现装饰对象对上一个对象的继承和方法重载。最终的对象是经过一系列装饰的装饰对象。代码如下:Function Sale (price) { this.price = price || 100;}Sale.decorators = {};Sale.decorat原创 2017-05-17 17:07:19 · 396 阅读 · 0 评论 -
javascript设计模式之迭代器模式
javascript的迭代器模式实现了一种类似链表的迭代器数据结构和相关查找函数。代码如下:Var agg = (function () { var index = 0, arr = [1,2,3], length = arr.length; return { next: function () {原创 2017-05-17 17:12:16 · 234 阅读 · 0 评论 -
javascript中this的相关疑问解答
前言javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域。并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码,都存放在Window函数内(这是个假设),也就是说javascript中只有函数作用域(前面假设做前提下)。作用域是什么作用域是一个盒子,盒子内部的变量只能在当前盒子中使用,作用域盒子是可以嵌套的,内部盒翻译 2017-05-17 15:54:09 · 357 阅读 · 0 评论 -
js判断变量是否是数组(跨浏览器和ECMA)
在开发中,我们经常需要判断某个对象是否为数组类型,在Js中检测对象类型的常见方法都有哪些呢?typeof 操作符对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时var arr=new Array(“1”,”2”,”3”,”4”,”5”);alert(typeof(arr)); 你会收到一个object 的答案,有点原创 2017-04-27 13:11:55 · 499 阅读 · 0 评论 -
js面向对象编程指南学习笔记--闭包封装HTTP请求
js面向对象编程指南学习笔记–闭包封装HTTP请求首先补充一下js 闭包 的概念,闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。闭包可以让局部变量升级到全局变量的一种js特有的方法。下面是实例代码。改代码实现了封装http请求:下面是封装request函数和封装创建XMR对象函数: functio原创 2017-04-25 21:15:43 · 562 阅读 · 0 评论 -
面向委托关联的js代码应用实例
javascript是一种面线对象的编程语言(OOP),但是js和其他面向类语言不同,js中并没有类的概念,但是大多数开发人员都熟悉了类的概念,想方设法在js中加入类的概念,于是就出现了很多类的设计模式,我想说的是,这些设计模式在某些方面也许加快了我们的开发速度,但是却给我们带来严重的不良后果,比如代码维护等等。实际上,js中已经有一些语法是利用来实现类似类的功能,这就是原型,prototype,可原创 2017-07-05 17:43:42 · 382 阅读 · 0 评论