【javascript】创建对象的几种方式
2016-02-24 11:02
711 查看
1.工厂模式
function createPerson(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 person = createPerson("Greg", 27, "Doctor");
2.构造函数模式
//构造函数首字母大写 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }; } //当做构造函数使用 var person = new Person("Greg", 27, "Doctor"); person.sayName(); // "Greg" //作为普通函数调用 Person("Greg",27,"Doctor"); window.sayName(); // "Greg" //使用new操作符来调用构造函数,则创建新对象,并且属性和方法都赋给指定的对象,如果不用new操作符,则将属性和方法赋给window对象。
3.原型模式
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。function Person(){ } Person.prototype.name = "Greg"; Person.prototype.age = 29; Person.prototype.job = "Doctor"; Person.prototype.sayName = function(){ alert(this.name); } var person = new Person(); person.sayName();
通过原型模式创建的对象,所有的属性都是一样的 。
4.动态原型模式
该模式是把所有信息都封装到构造函数中,通过构造函数中初始化原型(仅在必要的情况下),又保持了同时使用构造函数和原型的优点function Person(name, age, job){ this.name = name; this.age = age; this.job = job; if(typeof this.sayName != "function"){ Person.prototype.sayName = function(){ alert(this.name); } } } var friend = new Person("Greg",20,"Doctor"); frient.sayName();
相关文章推荐
- JS原型与原型链终极详解
- JavaScript实现99乘法表及隔行变色实例代码
- ejs 文档翻译
- JS回调函数
- JavaScript简介与工作原理
- 返回值重载,安全访问JSON反序列化生成的NSDictionary
- JavaScript中Object.prototype.toString方法的原理
- json sort
- JavaScript判断变量是否为数组的方法(Array)
- javascript小实例,实现99乘法表及隔行变色
- 教你用javascript实现随机标签云
- Collection+JSON 文档
- 实现OC与JS的交互
- js实现图片上传预览
- 浅谈使用Fiddler工具发送post请求(带有json数据)以及get请求(Header方式传参)
- javascript 对象遍历
- js Ajax跨域请求
- js排序和查找
- javascript 数组去重
- javascript parseInt函数详解