js创建对象
来源:互联网 发布:贵阳大数据交易所 地址 编辑:程序博客网 时间:2024/06/04 21:54
1、 工厂模式
function createPerson(name,age,job){
var o = new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=sayName;
return o;
}
function sayName(){ alert(this.name);}
2 构造模式
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=sayName;
}
根据OO原则,函数首字母大写。
要创建Person必须使用new,该种方式能够将实例标识成一个特定的类型,例如
var person1 = new Person();
alert(person1 instranceof Person); true,
任何用new操作符来调用的函数,均可作为构造函数。
3 原型模式
我们创建的每个函数都有一个protptype属性,该属性是一个指针,指向一个对象
function Person(){} //构造函数什么都没,如果有为实例属性或者实例方法
Person.prototype.name='wang'; //原型属性 Person.prototype.age = 30; Person.prototype.sayName = function(){ //原型方法 return this.name+' '+this.age; }; var p1 = new Person(); var p2 = new Person(); alert(p1.sayName==p2.sayName);原型模式执行流程:1、先查找构造函数的实例属性或者方法,如果有立即返回2、如果构造函数里面没有,在原型对象里面查找。
delete p1.name删除属性
hasOwnProperty()判断在实例中是否存在指定属性
‘name’ in p1 //不管实例或者原型中只要存在,返回true
原型模式,所有初始化值是一致的,这也是原型模式的最大优点,共享。
4、原型与共享模式
不共享的部分使用构造方式,共享部分使用原型模式
function Person(name,age){
this.name=name,
this.age=age;
} //构造函数什么都没,如果有为实例属性或者实例方法
Person.prototype = { constructor: Person, sayName:function(){ return this.name+this.age; } } alert(new Person('wangg',29).sayName());此种方式解决了传参和共享的问题
5、动态原型模式
function Person(name,age){
this.name=name,
this.age=age;
this.family=[‘秋鸣’,’旺琴’];
//原型的初始化只要第一次执行就ok,不需要每次 if (typeof this.sayName!='function') { Person.prototype.sayName = function(){ alert(this.family); return this.name+this.age; } }} //构造函数什么都没,如果有为实例属性或者实例方法alert(new Person('test1',29).sayName());alert(new Person('test2',29).sayName());
- [js]创建js对象
- js创建数组,创建对象
- JS 创建对象
- JS 创建Ajax 对象
- JS创建对象
- JS 创建对象
- js 对象创建
- js创建对象
- js对象创建过程
- js:创建对象
- js创建对象
- js创建对象
- 创建js对象
- js对象创建方式
- js创建对象
- JS创建对象
- JS 创建对象
- JS创建对象
- linux进程间通信——netlink
- Kubernetes结构设计理念
- Git浅显使用
- PHP实现计划任务 自动执行
- Nginx 负载均衡--(1)概念认识篇
- js创建对象
- Django-restframework14 路由类Router(冲突)
- iOS开发
- 范数
- 岩土工程英语词汇A-R
- 第十一周项目2 —操作用邻接表存储
- 16S的OTU差异分析方法:PCoA,Lefse
- net start MongoDB 服务名无效错误解决
- 第九周项目3(3)- 求二叉树b的叶子节点个数