美文网首页
对象模式

对象模式

作者: 雨中追燕 | 来源:发表于2016-11-15 20:40 被阅读9次

浅复制

var person = {

   name:"zhu",

   say:function(){

   console.log(this.name);

    }

}

//person 为xiao的原型对象

var xiao = Object.create(person);

深拷贝

function deepCopy(p, c) {

var c = c || {};

for (var i in p) {

if (typeof p[i] === 'object') {

c[i] = (p[i].constructor === Array) ? [] : {};

deepCopy(p[i], c[i]);

} else {   c[i] = p[i];  }

}return c;

}

工厂模式:

是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可

例子:

function xyy(name){

var obj = new Object();

obj.name =name;

obj.show = function(){

alert(this.name);

}

return obj;

}

var obj = xyy('abc');

构造函数

function xyy(name){

this.name = name;

this.show = function(){

alert(this,name);

  }

}

var obj = new xyy('abc');

构造函数和工厂模式的差别:

函数名首写字母为大写

(虽然标准没有严格规定首写字母为大写,但按照惯例,构造函数的首写字母用大写)

没有显示的创建对象

直接将属性和方法赋值给了this对象

没有return语句

使用new创建对象

能够识别对象(这正是构造函数模式胜于工厂模式的地方)

构造函数的缺点:

使用构造函数的最大的问题在于每次创建实例的时候都要重新创建一次方法(理论上每次创建对象的时候对象的属性均不同,而对象的方法是相同的),然而创建两次完全相同的方法是没有必要的,也浪费内存

原型模型:

我们创建的每个函数都有prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。使用原型对象的好处就是可以让所有对象实例共享它所包含的属性及方法。

例子:

function xyy(name){

this.name = name;

}

xyy.prototype.show = function(){

alert(this.name);

}

例子2:构造函数和原型模型的组合

//构造函数

function xyy(name,age,add){

this.name = name;

this.age=age;

this.add=add;

}

xyy.prototype={

//constructor属性,指向它们的构造函数。

constructor:xyy,

say:function(){

console.log(this.name);

}

name:hahaha,

age:20,

}

var xiao =new xyy('xyy',21,''sz');

delete xiao.name;

console.log(xiao.name);

//hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。

console.log(xiao.hasOwnProperty);

var zou = new Person('zou',20,'GZ');

console.log(zou.hasOwnProperty("name"));

相关文章

  • 对象的创建与继承

    创建对象 工厂模式 => 构造函数模式 => 原型对象模式 => 构造函数模式+原型对象模式 工厂模式 构造函数模...

  • Java设计模式之代理模式

    代理模式 模式介绍 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用...

  • 正则表达式

    使用演示 模式对象 使用演示 模式对象

  • 对象间交互模式

    对象间交互模式 对象间交互模式

  • 空对象模式,这个模式怎么用?

    空对象模式,还有这种模式? 空对象模式,应用在什么场景呢? 空对象模式(Null Object Pattern),...

  • java设计模式-代理模式(Proxy)

    定义 代理模式是对象的结构模式。代理模式给某一个对象提供代理对象,并由代理对象控制对源对象的引用。 代理模式的结构...

  • Java代理总结

    代理(Proxy)模式:代理模式是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的...

  • 【javascript】js对象与继承小结

    创建对象的模式 工厂模式,使用简单的函数创建对象,为对象添加属性和方法,然后返回对象。这个模式后来被构造函数模式所...

  • (GeekBand)C++设计模式 第二周学习笔记

    Factory Method模式 “对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中...

  • JavaScript 面向对象

    单个对象 创建自定义对象 创建对象字面量 变体 工厂模式 构造函数模式 原型模式 构造函数模式+原型模式 寄生构造模式

网友评论

      本文标题:对象模式

      本文链接:https://www.haomeiwen.com/subject/bbllpttx.html