JS中对象的建立
2015-10-21 14:07
519 查看
1 工厂模式
function Person(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 person1 =Person("Nicholas", 29, "Software Engineer");
2 构造函数模式
function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }; }创建对象实例
var person1=new Person("Jim",29,"manage");
使用构造函数的主要问题是每个方法都要在每个实例上重新创建一遍
3 原型模式
每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象(原型对象),而这个对象的用途就是包含可以由特定类型的所有实例共享的属性和方法,并且该对象会自动获得constructor属性,constructor属性包含一个指向prototype属性所在函数的指针。function Person(){ } Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function(){ alert(this.name); };创建对象实例
var person1 = new Person(); person1.sayName(); //"Nicholas"
为减少不必要的输入(Person.prototype),用一个包含所有属性和方法的对象字面量来重写整个原型对象
<pre name="code" class="javascript">function Person(){} Person.prototype={ name:"Nicholas", age:29, job:"Software Engineer", sayName:function(){ alert(this.name); } };
但是该语法本质上完全重写了默认的prototype对象,因此constructor属性也就变成了新对象的constructor属性(指向Object构造函数),不在指向Person函数。可以像下面这样特意将它设置回适当的值
function Person(){ } Person.prototype = { constructor : Person, name : "Nicholas", age : 29, job: "Software Engineer", sayName : function () { alert(this.name); } };原型中的所有属性是被很多实例共享的,这种共享对函数非常适合,对于包含基本只的属性可以通过在实例上添加一个同名属性改变属性的值,但是对于包含引用类型值(如数组)的属性来说,因为改变一个对象实例的值,其他对象实例的值也随之改变。所以很少有人单独使用原型模式
4 组合使用构造函数模式和原型模式
创建自定义类型的最常见模式,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。
function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friends = ["Shelby", "Court"]; } Person.prototype = { constructor: Person, sayName : function () { alert(this.name); } };
相关文章推荐
- jsp表单提交后,显示中文乱码
- ExtJS 添加图标icon
- javascript常见的数据校验方法
- 二、JavaScript语言--JS实践--倒计时效果
- JavaScript面试技术问题
- 你不知道的JavaScript--Item14 使用prototype的几点注意事项
- 你不知道的JavaScript--Item14 使用prototype的几点注意事项
- JS导出datagrid导出Excel
- JS判断手机浏览器
- js 闭包
- jsp九大内置对象、四大作用域和session的生命周期
- JavaScript 数组详解
- JSP自定义标签开发入门
- JS中的克隆与数据属性和访问器属性
- JSP实现远程文件下载保存到服务器指定目录中的方法
- JSON入门
- JSP导出Excel文件的方法
- HTML文件中内嵌JS语句的几种方式
- 常用正则表达式
- JSP下载服务器文件的方法