摘要: 上次讲到的原型链中,原型链存在一个问题就是不能向超类型的构造函数传递参数。那么这次就是要实现如何向超类型构造函数传递参数。这种方法我们称之为借用构造函数(constructor stealing)这里的实现方法是使用js的原生方法apply()或all()。那么先温习下apply()和all()函数的知识。call方法:语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])定义:调用一个对象的一个方法,以另一个对象替换当前对象。说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 阅读全文
posted @ 2013-02-01 18:47 最美的痕迹 阅读(4436) 评论(0) 推荐(0) 编辑
摘要: 继承是OO语言中一个重要的特性和概念。许多的OO语言中都支持两种继承方式:接口继承和实现继承。ECMAScript只支持实现继承,其实现继承主要是靠原型链来实现。在PHP语言中,是使用extend来实现继承。那么我们就先来讲讲原型链。原型链的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。简单回顾下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针(prototype),而实例则包含一个指向原型对象的内部指针(__proto__)。实现原型链有一种基本模式,其代码大致如下: function SuperType() { ... 阅读全文
posted @ 2013-02-01 17:32 最美的痕迹 阅读(22735) 评论(5) 推荐(1) 编辑
摘要: 一、prototype和__proto__的概念prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性。__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。用chrome和FF都可以访问到对象的__proto__属性,IE不可以。二、new 的过程var Person = function(){};var p = new Person();new的过程拆分成以下三步:(1) var p={}; 也就是说, 阅读全文
posted @ 2013-02-01 15:37 最美的痕迹 阅读(30143) 评论(12) 推荐(15) 编辑
摘要: 用户体验非常不错的五种分页插件效果,这是国外某网站首推的效果,给大家分享一下!在线演示与下载 阅读全文
posted @ 2013-02-01 10:50 最美的痕迹 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 命令模式将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。对请求排队或记录请求日志,以及支持撤销的操作。命令模式以松散耦合主题为基础,发送消息、命令和请求,或通过一组处理程序发送任意内容。每个处理程序都会自行判断自己能否处理请求。如果可以,该请求被处理,进程停止。您可以为系统添加或移除处理程序,而不影响其他处理程序。命令模式的四种角色:1. 接收者(Receiver)负责执行与请求相关的操作2. 命令接口(Command)封装execute()、undo()等方法3. 具体命令(ConcreteCommand)实现命令接口中的方法4. 请求者(Invoker)包含Comman 阅读全文
posted @ 2013-01-31 18:00 最美的痕迹 阅读(1674) 评论(1) 推荐(1) 编辑
摘要: 观察者模式(ObserverPattern)观察者模式属于行为模式,是定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。它完美的将观察者对象和被观察者对象分离。可以在独立的对象(主体)中维护一个对主体感兴趣的依赖项(观察器)列表。让所有观察器各自实现公共的Observer接口,以取消主体和依赖性对象之间的直接依赖关系。<?phpinterface IObserver { function onChanged($sender, $args);}interface IObservable { function addObserve... 阅读全文
posted @ 2013-01-31 17:58 最美的痕迹 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 策略模式(StrategyPattern)策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。策略模式的三个角色:1.抽象策略角色2.具体策略角色3.环境角色(对抽象策略角色的引用)实现步骤:1.定义抽象角色类(定义好各个实现的共同抽象方法)2.定义具体策略类(具体实现父类的共同方法)3.定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)策略模式的代码实例:<?php abstract class baseAgent { 阅读全文
posted @ 2013-01-31 17:56 最美的痕迹 阅读(3195) 评论(0) 推荐(0) 编辑
摘要: 单例模式(SingletonPattern单件模式或单元素模式)单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。单例模式有以下3个特点:1.只能有一个实例。2.必须自行创建这个实例。3.必须给其他对象提供这一实例。那么为什么要使用PHP单例模式?PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的 阅读全文
posted @ 2013-01-31 17:52 最美的痕迹 阅读(35919) 评论(2) 推荐(4) 编辑
摘要: 可能一直都以为设计模式只是为Java架构师准备的,实际上,设计模式对于每个人都非常有用。为什么说它们在PHP应用程序中也非常有用?接下来让我来解释这些问题。设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法。用较小的示例展示设计模式的价值与功用是非常困难的。这往往有些大材小用的意味,因为模式实际上是在大型代码库中发挥作用的。既然已经了解了设计模式以及它们的有用之处,现在我们来看看PHP5的几种常用模式。一、工厂模式(FactoryPattern)工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。(JAVA中工 阅读全文
posted @ 2013-01-31 17:45 最美的痕迹 阅读(2511) 评论(1) 推荐(0) 编辑
摘要: 在前几年,我入行做网页设计时,就对网页设计情有独钟。时隔好久没有怎么用了,搬上来,方便查借以后使用。好多时候,都是逼出来的,当初做程序员,都是前后台兼顾,能里能外。回头想想,这也挺好。 阅读全文
posted @ 2013-01-31 15:13 最美的痕迹 阅读(436) 评论(0) 推荐(0) 编辑