创建对象的方法
来源:互联网 发布:淘宝网服装女装秋装 编辑:程序博客网 时间: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高程》
- 创建对象的方法
- 创建数据库对象的方法
- 创建类对象的方法
- Java创建对象的方法
- 创建XmlHttpRequest对象的方法
- InetAddress创建对象的方法
- java对象创建的方法
- js 创建对象的方法
- JavaScript 创建对象的方法
- js的创建对象方法
- Javascript创建对象的方法
- JavaScript创建对象的方法
- js创建对象的方法
- 动态创建用户对象对象的方法
- 对象创建,对象方法
- 通用的XMLHttpRequest对象的创建方法
- 创建IXMLDOMDocument对象的三种方法
- 创建Connection对象的三种方法
- Fragment懒加载机制
- RandomAccessFile
- elasticsearch之Document APIs【Get API】
- 小程序tabBar添加
- 正则表达式(足够用了)
- 创建对象的方法
- MySQL日期时间函数
- Spring之IOC快速入门(一)
- Android 系统启动时 PackageManagerService 对应用组件信息表的构建过程
- oracle查询锁表解锁语句
- 我的android异常系列——java.lang.IllegalStateException: commit already called
- cmd的操作命令导出导入.dmp文件
- D
- Apache Kylin Cube 构建原理