在JavaScript中虽说可以用Object的构造函数或者字面量创建单个对象,但是用这些方式来创建多个对象时就有一个明显的缺点,产生了大量的重复代码.为解决这些问题,许多模式就应运而生. 1. 工厂模式 由于在ECMAScript中无法创建类,所以就发明了一种函数,用来封装以特定接口创建对象的细节. 但是以这种方式创建的对象没有解决对象识别问题,即怎样知道一个对象的类型. function createPerson(name,age,job) { var o = new Object(); o…
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unt…
所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象.稳妥对象最适合在一些安全的环境中(禁止使用this和new)或者在防止数据被其他应用程序改动时. 稳妥构造函数模式有2个特点:1.新创建对象的实例方法不引用this;2.不使用new操作符调用构造函数. function createHuman(name, sex) { var obj = new Object(); obj.say = function () { alert(name); } } var man = creat…
这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象; 但是从表面上看,这个函数有很像典型的构造函数. function createHuman(name,sex) { var obj = new Object(); obj.name = name; obj.sex = sex; obj.say = function () { alert(this.name); } } var man = createHuman("李白", "男&q…
细看javascript创建对象模式的诞生,具体的脉络为:不使用任何模式——工厂模式——构造函数模式——原型模式——组合使用构造函数模式——动态原型模式——寄生构造函数模式——稳妥构造函数模式.每一种模式都是为了解决一定的问题而诞生的,都有自己的缺陷和优势.下面我们来一一介绍: 一.不使用任何模式 javascript中创建对象的方式有以下两种: //使用new Object构造函数 var person = new Object(); person.name = "Lillian";…
组合使用构造函数模式和原型模式 上篇,我们提到了原型模式的缺点,就是每个实例不能拥有自己的属性,因为纯原型模式所有的属性都是公开给每个实例的,故我们可以组合使用构造函数模式和原型模式.构造函数用来定义实例的属性,而原型模式用来定义方法和公用属性.这样的话,每个实例都有自己的属性副本(而不是指向原型的引用),同时它也共享原型上方法的引用.而且,这种混合模式还支持对构造函数传参,所以可以说是结合了两种模式的优点.示例如下: ```javascript function Animal(name,typ…
/** * Created by W_YH on 2016/3/14. */ /* 对象的创建方式 */ //------->第一种创建方式------创建Object的实例 var person= new Object(); person.age=20; person.name='milk'; person.say=function(){ console.log(this.age+this.name); }; //------->第二种方式-----对象字面量 var person={ na…