我们将使用构造函数模式将工厂模式进行改写。 在以上代码中Employee函数取代了CreateEmployee函数,Employee中的代码与CreateEmployee中的代码不同如下: 没有显示的创建对象 直接将属性和方法赋给了this对象 没有return语句 要创建Employee类的新实例,必须使用new操作符,实际会经历四个步骤: 创建一个新对象 将构造函数的作用域赋给新的对象 执行构造函数中代码 返回新对象 以上代码最后Jim和Sun中分别保存着Employee的两个不同实例,这两个实例都有一个constructor(构造函数)属性,该属性指向Employee,可以做如下测试 同时这两个对象又都是Object类型的,可通过如下代码检测。 创建自定义的构造函数意味着将来可以把它的实例标石为一种特定的类型,而这也正是构造函数模式胜过工厂模式的地方。 下面详细讲解一下构造函数: 将构造函数当做函数 构造函数与其他函数的唯一区别就在于调用它们的方式不同。但是构造函数也是函数,不存在定义构造函数的特殊语法。其实,任何函数,只有通过new来调用,那他就可以作为构造函数,例如,Employee除了以上用new方法调用外,还可以用如下方式来调用。 构造函数的问题 使用构造函数的主要问题就是都要在每个实力上重新创建一遍,以上两个对象中的sayName方法其实是不同的Function的实例,可以用如下方法证明: alert(Jim.sayName == Sun.sayName);//false 但是创建两个完成同样任务的Function实例,所以我们对上面的函数进行改写,如下 这样就解决了两个函数做同一件事情的问题,但是新的问题又会出现了,这个在全局作用域中定义的函数,实际上只能被某个对象引用,而且最要命的问题是,如果对象需要定义很多方法,那么就需要定义很多个全局函数,所以这个自定义的引用类型,就没有任何封装性可言了.
推荐整理分享JavaScript面向对象设计二 构造函数模式(javascript面向对象 第三方类库),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:javascript面向对象编程 PDF,javascript面向对象精要pdf,javascript面向对象编程,javascript面向对象精要pdf,javascript面向对象精要pdf,javascript面向对象编程,javascript面向对象编程指南,javascript面向对象吗,内容如对您有帮助,希望把文章链接给更多的朋友!
JavaScript面向对象程序设计三 原型模式(上) 我们创建的每一个函数都有一个prototype(原型)属性,该属性是一个对象,包含可以有特定类型的所有实例共享的属性和方法。使用它的好处就在于可
JavaScript 原型继承 Object.prototypeJavaScript是基于原型继承的,任何对象都有一个prototype属性。Object.prototype是所有对象的根,并且不可改变。Object.prototype=null;alert(Object.prototype
js 函数调用模式小结 方法调用模式当一个函数被保存为对象的一个属性时,我们称之它为该对象的一个方法,那么this被绑定到该对象上。varmyObject={name:"myObject",value:0,increment