Javascript-寄生构造函数模式

所谓寄生构造函数就是创建一个函数,然这个函数只是封装创建对象的代码,然后再返回新创建的对象。

function Person(name,age,job){

var o = new object();

o.name = name;

o.age=age;

o.job=job;

o.sayName = function(){

alert(this.name)

}

return o;

}

var friend = new Person(name1,age1,job1)

friend.sayName(); // name1

注:这种模式不推荐使用

时间: 2024-11-01 02:05:46

Javascript-寄生构造函数模式的相关文章

JavaScript之面向对象学习七(动态原型模式和寄生构造函数模式创建自定义类型)

一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可能会感到非常困惑.因为对象在其他oo语言中往往是封装在一块的,而构造函数确是和原型分开的,所以并没有真正意义上的封装,所以动态原型模式正是致力与解决这一问题的一个方案! 动态原型模式将所有的信息都封装在构造函数中(包括原型和实例属性),通过在构造函数中实例化原型(仅在必要的情况下)实现封装,又保持了

寄生构造函数模式创建对象

这个模式可以在特殊的情况下用来为对象创建构造函数 例子一 假设我们想创建一个具有额外方法的特殊数组. 由于不能直接修改Array构造函数(此为使用寄生构造函数模式的原因) function SpecialArray() {     // 创建数组    var values = new Array();     // 添加值    // values.push.apply(values, arguments);    values.push(...arguments);     // 添加方法 

Javascript创建对象 -- 构造函数模式

1 function Person(name, age) { 2 this.name = name; 3 this.age = age; 4 this.eat = function() { 5 alert("eating..."); 6 } 7 } 8 var p1 = new Person("cai10", 21); 9 var p2 = new Person("cai20", 27); 10 alert(p1.name); // cai10

组合使用构造函数模式和动态原型模式、寄生构造函数模式(创建具有额外方法的特殊数组)

function Bird(name, age) {     this.name = name;     this.age = age;     this.sons = ["Tom", "John"];     //在sayName()方法不存在的情况下,添加到原型中     if (typeof this.sayName != "function") {         Bird.prototype.sayname = function() {

函数创建对象(5)寄生构造函数和稳妥构造函数模式

1.寄生构造函数模式 function Person(name,age,job){ var o=new Object(); o.mane=mane; o .age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var friend=new Person("Nicoholas",29,"Engineer"); friend,sayName();//"Nichola

深入理解JavaScript中创建对象模式的演变(原型)

创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Object构造函数和对象字面量方法 工厂模式 自定义构造函数模式 原型模式 组合使用自定义构造函数模式和原型模式 动态原型模式.寄生构造函数模式.稳妥构造函数模式 第一部分:Object构造函数和对象字面量方法 我之前在博文<javascript中对象字面量的理解>中讲到过这两种方法,如何大家不熟悉,可以点进去看一看回顾一下.它们的优点是用来创建单个的对象非常方

Javascript-稳妥构造函数模式

function Person(name,age){ var o = new object(); o.sayName = function(){ alert(name); } } var friend = new object(name1,age1); friend.sayName(); //name1; 变量friend中vaocun的是一个稳妥对象,而除了调用sayName方法外,没有别的方式可以访问其他数据成员.即使有其他代码会给这个对象添加方法或者数据成员,蛋也不可能有别的办法访问传入到

7中创建对象的方式(工厂模式、构造函数模式、原型模式、动态原型模式等分析)

1.工厂模式 // 定义工厂函数 function createPerson(name, age, hobby) { // 创建一个临时object对象 var obj = new Object(); // 将工厂函数的参数赋值给临时对象 obj.name = name; obj.age = age; obj.hobby = hobby; obj.sayName = function() { console.log("我的名字叫:"+this.name); } // 返回这个包装好的临

js - 创建对象的几种方式(工厂模式、构造函数模式、原型模式)

原文引用https://www.dazhuanlan.com/2019/08/26/5d62f8b594f10/ 工厂模式 做法:内部创建一个对象,并未对象属性赋值并且返回 缺点:解决创建多个相识对象的问题,但不能识别创建的对象的类型 构造函数模式 做法:直接将属性和方法赋值给 this 对象,没有 return 语句 缺点:对象不是共用方法和属性,每 new 一次对象就要创建一个内存,超出性能消耗 原型模式 做法:通过 prototype 为对象添加属性 缺点:每个实例都共享属性方法,实例中修

组合使用构造函数模式和原型模式和寄生构造函数

chuangjian自定义类型的最常见方式就是组合使用构造函数模式与原型模式,构造函数模式用于定义实力属性,原型模式定义方法和共享的属性. 寄生构造函数: 原来的写法 var array1 = ['1','2'];var array2 = ['1','2','3'];array1.a = function () { alert(this.length);};array1.a();array2.a = function () { alert(this.length);};array2.a(); 与