JS创建对象之稳妥构造函数模式】的更多相关文章

所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象 function Person(name, age, job) { // 创建要返回的对象 var o = new Object(); // 可以在这里定义私有变量和函数 // 添加方法 o.sayName = function() { alert(name); }; // 返回对象 return o; } 在以这种模式创建的对象中,除了使用sayName()方法之外,没有其他办法访问name的值:可以像下面使用稳妥的Perso…
所谓稳妥对象,指的是没有公共属性,而且其方法也不引用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 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…
一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可能会感到非常困惑.因为对象在其他oo语言中往往是封装在一块的,而构造函数确是和原型分开的,所以并没有真正意义上的封装,所以动态原型模式正是致力与解决这一问题的一个方案! 动态原型模式将所有的信息都封装在构造函数中(包括原型和实例属性),通过在构造函数中实例化原型(仅在必要的情况下)实现封装,又保持了…
javascript创建对象的方法--构造函数模式 一.总结 构造函数模式作用和不足 1.作用:解决工厂模式不是用new关键字来创建对象的弊端 2.作用:解决工厂模式创建的实例和模型没有内在联系的问题 3.不足:无法解决工厂模式不同实例对应于不同内存的问题(内存浪费),这个用原型模式可以解决 二.javascript创建对象的方法--构造函数模式(需仔细看) 构造函数模式 new 调用的函数为构造函数,构造函数和普通函数区别仅仅在于是否使用了new来调用. 所谓“构造函数”,就是专门用来生成“对…
目录 1.new Object () 2.字面式创建对象 3.工厂模式 4.构造函数模式 4.1.将构造函数当作函数 4.2.构造函数的问题 5.原型模式 5.1.理解原型对象 5.2.原型与in操作符 5.3.更简单的原型语法 5.4.原型的动态性 5.5.原生对象的原型 5.6.原型对象的问题 6.组合使用构造函数模式和原型模式 7.动态原型模式 8.寄生构造函数模式 9.稳妥构造函数模式 1.new Object () var person = new Object(); person.n…
创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式.构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性. 结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存. 另外,这种混成模式还支持向构造函数传递参数:可谓是集两种模式之长.下面的代码重写了前面的例子. function Person(name ,age ,job){ this.name = name; this.age = age; this.friends = ["she…
1.Object 模式 var o1 = {};//字面量的表现形式 var o2 = new Object; var o3 = new Object(); var o4 = new Object(null); var o5 = new Object(undefined); var o6 = Object.create(Object.prototype);//等价于 var o = {};//即以 Object.prototype 对象为一个原型模板,新建一个以这个原型模板为原型的对象 //上面…
这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象; 但是从表面上看,这个函数有很像典型的构造函数. function createHuman(name,sex) { var obj = new Object(); obj.name = name; obj.sex = sex; obj.say = function () { alert(this.name); } } var man = createHuman("李白", "男&q…
动态原型模式把所有信息都封装在了构造函数中,而通过在构造函数中初始化原型(仅在必要的情况下),又保持了 同时使用构造函数和原型的优点:换句话说,可以通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型 function Person(name, age, job) { // 属性 this.name = name; this.age = age; this.job = job; // 方法 if (typeof this.sayName != "function") { Per…