创建对象的方法

来源:互联网 发布:淘宝网服装女装秋装 编辑:程序博客网 时间:2024/05/17 03:46

1.工厂模式

function createPerson(age,name){

var ob=new Object();

ob.name=name;

ob.age=age;

return ob;

}

缺点:无法解决对象识别问题

2.构造函数模式

function Person(name,age){

this.name=name;

this.age=age;

}

与工厂模式的区别:

1)没有显式的创建对象

2)直接将属性和方法给了this

3)没有return

4)调用时需要使用new的方法

5)创建的实例有一个constructor属性等于Person

优点:可以用instanceof 来检测对象累心

说明:

任何函数,只要通过NEW来调用,都是构造函数,任何函数,不通过NEW来调用,都不是构造函数。

缺点:构造函数里创建的函数对于不同实例来说是不同的,这个问题可以通过把函数定义在构造函数之外,然后再让构造函数内部的函数指向它。但这样做会导致多出了很多全局函数,封装性差。

构造函数在不给返回值的时候默认返回一个新的实例对象,也可以自己重写返回值。

3.原型模式

我们创建的每一个函数都有prototype属性,是一个指针,指向一个对象,这个对象可以包含由特定实例共享的属性和方法。就是说,我们不需要在构造函数里定义对象实例的信息,可以直接把信息添加到原型对象里。

我们再来讲讲原型对象:只要创建了一个函数,就会为该函数创建一个prototype属性,指向函数的原型对象,原型对象有一个constructor函数,再指回这个函数,也就是SOMEFUNCTION.prototype.constructor=SOMEFUNCTION

创建了自定义构造函数后,构造函数的原型对象只有一个constructor属性,还有一些从Object继承而来的方法,当调用构造函数创建一个新的实例后,这个实例的内部包含 一个指针,指向构造函数的原型对象,注意 ,是实例指向原型对象,而不是实例指向构造函数。

4.组合使用原型模式和构造函数模式

5.寄生构造函数模式:组合使用工厂模式和构造函数模

funciton Person(){

var values=new Array();

values.push.apply(values,arguments);

return values;

}

这里的返回的values和在函数外创建的数组对象一样,和构造函数、构造函数的原型属性之间不存在联系。不推荐使用。

参考资料《JS高程》

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗被别人下毒了怎么办 大掌门2没存元宝怎么办 大掌门2转换阵容怎么办 率土之滨s2绝版怎么办 异界气息的装备怎么办 vivo电板没电了怎么办 门套拼接有缝隙怎么办 公司如果一直没有上税收入怎么办 赛车输了俩百万怎么办 交pk金员工不交怎么办 员工不想交pk金怎么办 心悦光环领错角色怎么办 心悦光环领错了怎么办 扑克牌1到13洗后怎么办 南通长牌没钱了怎么办 镇魔曲手游阵营人数已满怎么办 镇魔曲忘记在哪个区怎么办 登录镇魔曲卡在实名验证怎么办 电脑玩联盟花屏怎么办 优盘文件或目录损坏怎么办 苹果下吃鸡设备不兼容怎么办 龙之谷账号忘了怎么办 不花钱的排风除湿怎么办 苹果平板id密码忘了怎么办 苹果平板忘记id及密码怎么办 饥荒抓到的兔子怎么办 苹果手机下载不了王者荣耀怎么办 ipad登录显示验证失败怎么办 苹果手机系统内存太大怎么办 ipad玩游戏没声音怎么办 微信活跃度低怎么办 想开通淘宝直播粉丝不够怎么办 下巴长泡泡还痒怎么办 脚起泡泡很痒怎么办 脚痒还有小泡泡怎么办 外阴长了肉疙瘩怎么办 嘴巴里泡泡破了怎么办 脚上泡泡破了怎么办 脸被自己扣破了怎么办 6s安装不了软件怎么办 苹果6s特别卡怎么办