摘要: 修改表单元素中placeholder属性样式、清除IE浏览器中input元素的清除图标和眼睛图标 阅读全文
posted @ 2018-04-23 11:14 雨霖月寒 阅读(1878) 评论(0) 推荐(2) 编辑
摘要: tooltip.css 纯CSS鼠标提示工具。 v. 2.0.0 更新日期:2018.4.12 预览DEMO。 阅读全文
posted @ 2018-04-19 20:27 雨霖月寒 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 原型与原型链是学习JavaScript这门语言不能不理解的两个重要概念,为什么?因为JavaScript是一门基于原型的语言。 怎么理解“JavaScript是一门基于原型的语言”?在软件设计模式中,有一种模式叫做原型模式,JavaScript正是利用这种模式而被创建出来。先来了解下原型模式的概念:原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。原型模式的目的是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。也就是说利用已有的一个原型对象,可以快速地生成和原型对象一样的新对象实例。 阅读全文
posted @ 2018-04-09 01:04 雨霖月寒 阅读(11909) 评论(0) 推荐(0) 编辑
摘要: 最近项目有个需求:用户之间发送消息时,如果发送者输入的信息中含有网址文本,要在接受者界面中显示网址链接,点击该链接直接跳转到网页。 这个功能和 QQ 发送网址文本的效果非常像,可以说是一模一样的。 思路:首先,要判断文本中是否含有网址文本,其次,将网址文本转换为可点击的链接文本,即将网址文本通过a标签括起来。 阅读全文
posted @ 2018-04-08 00:25 雨霖月寒 阅读(3265) 评论(0) 推荐(0) 编辑
摘要: 回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。 咋一看回调函数的概念,可能并不能立即理解什么是回调函数。通俗的讲,回调函数就是以函数作为参数传给另一个函数执行。比如:有一个函数A,函数B, 将A函数作为B函数的参数,然后在B函数里执行A函数,这就是最简单的回调。 阅读全文
posted @ 2018-04-07 15:42 雨霖月寒 阅读(421) 评论(1) 推荐(0) 编辑
摘要: 一、概念理解: 1、事件:HTML DOM 使 JavaScript 有能力对 HTML 事件做出反应。比如点击事件、鼠标移入/移出事件等。事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行。 2、DOM 事件流:冒泡事件流、捕获事件流。 3、DOM 事件模型:捕获、目标、冒泡。 那什么是事件委托呢? 事件委托:即是,一个事件本来是要绑定到某个元素上,然而却绑定到了该元素的父(或祖先)元素上,利用事件冒泡原理,触发执行效果。 阅读全文
posted @ 2018-04-06 22:00 雨霖月寒 阅读(2846) 评论(0) 推荐(0) 编辑
摘要: 使用递归函数必须要符合两个条件: 1、 在每一次调用自己时,必须是(在某种意义上)更接近于解; 这句话怎么理解? 大家家里都有楼梯吧?比如从一楼走到二楼,那么我们的起点是一楼,目的地是二楼,当你往上每走一个台阶是不是越接近二楼,也就是越接近目的地。 因此这句话可以这样理解:函数每一次调用自己时,就越接近于我们期望它完成的任务的终点。 2、必须有一个终止处理或计算的出口。 这句话的意思是:必须要有一个标准的标志,让函数结束调用函数自身。 比如,怎么知道你已经走到二楼了呢?当你看到有个门,门牌上写着 2F 的,然后推开它跨过去,那么你就到二楼了。 阅读全文
posted @ 2018-04-06 21:41 雨霖月寒 阅读(8259) 评论(0) 推荐(1) 编辑
摘要: 在 JavaScript 中 this 常常指向方法调用的对象,但有些时候并不是这样的,本文将详细解读在不同的情况下 this 的指向。 一、指向 window: 在全局中使用 this,它将会指向全局对象,因为浏览器中运行的 JavaScript 的全局对象默认为 window, 所以,此时 this 指向 window。 阅读全文
posted @ 2018-04-06 21:33 雨霖月寒 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 一、对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使 Parent 构造函数 成为 Children 的方法,然后调用它。Children 就会收到 Parent 的构造函数中定义的属性和方法。原理:就是把 Parent 构造函数放到 Children 构造函数里面执行一次。那为什么不直接执行,非要转个弯把 Parent 赋值给 Children 的 method 属性再执行呢? 这跟 this 的指向有关,在函数内 this 是指向 window 的。当将 Parent 赋值给 Children 的 method 时, this 就指向了 Children 类的实例。 阅读全文
posted @ 2018-04-06 15:15 雨霖月寒 阅读(1842) 评论(4) 推荐(1) 编辑
摘要: 命令模式是将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 主要解决的问题:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。 命令模式的结构 Command:定义命令的接口,声明执行的方法。 ConcreteCommand:命令接口实现对象,是"虚"的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 Receiver:接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。 Invoker:要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。 Client:创建具体的命令对象,并且设置命令对象的接收者。注意这个 阅读全文
posted @ 2018-03-13 10:21 雨霖月寒 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 主要解决的问题:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 阅读全文
posted @ 2018-03-08 14:08 雨霖月寒 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 工厂模式是一种最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。因为工厂模式就相当于创建实例对象的new,在JavaScript中通常会使用new关键字来实例化对象,如A: a=new A(), 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。 设计意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决的问题:主要解决接口选择的问题。 使用场景:我们明确地计划不同条件下创建不同实例时。 阅读全文
posted @ 2018-03-07 11:34 雨霖月寒 阅读(505) 评论(1) 推荐(0) 编辑
摘要: 现代商业界很流行一种叫代理商的人物,在商业界中代理商又称商务代理,是在其行业管理范围内接受他人委托,为他人促成或缔结交易的一般代理人。很多公司为了迅速占领市场,通常会选用一种叫代理商加盟的商业模式。比如快递公司,很多快递公司都会有代理商网点,发送快递时,会先把快递发到网点,然后网点就会发送到收件人手中。在程序语言中,我们把像这种一个类代表另一个类的功能的设计模式叫做代理模式。 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 主要解决问题:在直接访问对象时带来的问题,比如说:比如对象创建开销很大、或者某些操作需要安全控制,直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层(即中间层)。 阅读全文
posted @ 2018-03-06 16:49 雨霖月寒 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 所谓“条条道路通罗马”,在现实中,为达到某种目的往往不是只有一种方法。比如挣钱养家:可以做点小生意,可以打分工,甚至还可以是偷、抢、赌等等各种手段。在程序语言设计中,也会遇到这种类似的情况,要实现某种功能可以有多种方案选择。比如,在很多地图类软件上,你想从A地点到达B地点时,为你提供几种交通工具的选择,可以查看每种交通工具的所需费用和时间。在程序语言设计中,把这种设计模式叫做策略模式。 策略模式的定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。 主要解决问题:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 从上面两点可以知道,策略模式是通过定义一系列的算法,并对其进行封装,使其可以相互替换使用,目的是消除多层if...else语句嵌套的问题。这里的定义一系列的算法的意思是:你可以将每一种方案封装成函数或者是类的形式。 阅读全文
posted @ 2018-03-05 15:46 雨霖月寒 阅读(430) 评论(0) 推荐(1) 编辑
摘要: 单例模式是javascript中最简单也是最常用的模式之一。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式的特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 主要解决:一个全局使用的类频繁地创建与销毁。 怎么方便理解和记忆这种模式呢? 用一句话来记忆它就是:只有一个实例,有一个访问它的全局访问点,不能与new关键字一起使用。 阅读全文
posted @ 2018-03-04 15:22 雨霖月寒 阅读(393) 评论(0) 推荐(0) 编辑