所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象.稳妥对象最适合在一些安全的环境中(禁止使用this和new)或者在防止数据被其他应用程序改动时. 稳妥构造函数模式有2个特点:1.新创建对象的实例方法不引用this;2.不使用new操作符调用构造函数. function createHuman(name, sex) { var obj = new Object(); obj.say = function () { alert(name); } } var man = creat…
javascript创建对象的方法--构造函数模式 一.总结 构造函数模式作用和不足 1.作用:解决工厂模式不是用new关键字来创建对象的弊端 2.作用:解决工厂模式创建的实例和模型没有内在联系的问题 3.不足:无法解决工厂模式不同实例对应于不同内存的问题(内存浪费),这个用原型模式可以解决 二.javascript创建对象的方法--构造函数模式(需仔细看) 构造函数模式 new 调用的函数为构造函数,构造函数和普通函数区别仅仅在于是否使用了new来调用. 所谓“构造函数”,就是专门用来生成“对…
所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象 function Person(name, age, job) { // 创建要返回的对象 var o = new Object(); // 可以在这里定义私有变量和函数 // 添加方法 o.sayName = function() { alert(name); }; // 返回对象 return o; } 在以这种模式创建的对象中,除了使用sayName()方法之外,没有其他办法访问name的值:可以像下面使用稳妥的Perso…
这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象; 但是从表面上看,这个函数有很像典型的构造函数. function createHuman(name,sex) { var obj = new Object(); obj.name = name; obj.sex = sex; obj.say = function () { alert(this.name); } } var man = createHuman("李白", "男&q…
一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可能会感到非常困惑.因为对象在其他oo语言中往往是封装在一块的,而构造函数确是和原型分开的,所以并没有真正意义上的封装,所以动态原型模式正是致力与解决这一问题的一个方案! 动态原型模式将所有的信息都封装在构造函数中(包括原型和实例属性),通过在构造函数中实例化原型(仅在必要的情况下)实现封装,又保持了…
稳妥构造函数模式的代码应该是这样的: function Person(name, age, job) { var o = new Object(); // private members var nameUC = name.toUpperCase(); // public members o.sayName = function() { alert(name); }; o.sayNameUC = function() { alert(nameUC); }; return o; } var per…
使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, sayName: function(){ alert(this.name); } }; 使用Object.defineProperties() 方法给对象添加属性:(只有IE9+,FF4+,SF5+,OP 12+,Chrome支持) var student = {}; Object.definePropert…
在JavaScript中虽说可以用Object的构造函数或者字面量创建单个对象,但是用这些方式来创建多个对象时就有一个明显的缺点,产生了大量的重复代码.为解决这些问题,许多模式就应运而生. 1. 工厂模式 由于在ECMAScript中无法创建类,所以就发明了一种函数,用来封装以特定接口创建对象的细节. 但是以这种方式创建的对象没有解决对象识别问题,即怎样知道一个对象的类型. function createPerson(name,age,job) { var o = new Object(); o…
在js中有几种模式可以创建对象,通过对象操作所包含的属性与方法. 一般来说,构造函数名称的第一个字母为大写字母,非构造函数名称的第一个字母为小写字母,当然,构造函数与一般函数唯一的区别只是调用的方式不同而已,所以任何函数只要通过new来调用,那它就可以作为构造函数,若不通过new来调用,则与一般函数一样.  谈谈我对这几种模式的理解:  工厂模式:创建一个一般函数,在函数里创建一个Object对象,为这个对象增添属性与方法,同时赋予其值,最后返回对象.无法识别对象类型.  构造函数模式:创建构造…
javascript创建对象的方法--组合模式 一.总结 0.作用:解决原型模式对象独有属性创建麻烦的问题 1.组合模式使用普遍:jquery就是用的组合模式,组合模式使用非常普遍 2.组合模式优点:a.支持传参  b. 解决内存浪费(共用的函数和属性用原型方式,非共用的的函数和属性用构造函数的方式) 3.组合模式的实现:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数的方式 二.javascript创建对象的方法--组合模式 构造函数和原型组合模式 这是目前最为常用的创建对象的方式.…