redhu 发表于 2013-1-29 09:26:59

javascript对象创建----六大步靠齐java

以下是我们可以创建出js对象的六大方法,其中第五六种是我们在开发中应该常用到的,前面四种是我们应该避免的。
1、最传统的:
var person = new Object();    person.name = "hmj";    person.age = 25;    person.showMsg = function(){      alert("name:"+this.name+";age:"+this.age)    }
用法:
    person.showMsg();



2、工厂模式创建:
工厂就是生产对象的地方,在这里是一个方法。这个方法能批量创建对象。
function createPerson(name,age){    var person = new Option();    person.name = name;    person.age = age;    person.showMsg = function(){      alert("name:"+person.name+";age:"+person.age);    }    return person;}
用法:
var person = createPerson("hmj",25);
person.showMsg();
说明:在这里我们批量地创建对象的并初始化对象方法的时候,每次都会创建新的函数,这会造成对内存的浪费。
我们可以把这个函数提取出来,只需要把对象的属性指向这个方法的引用即可。

3、构造方法模式:
因为js的开发越来越正规,创建对象时却没有引起足够重视。传统的面向对象创建对象都是非常正规的比方说:类首字母大写,
使用构造行数,使用new关键字创建对象。
function Person(name,age){    this.name = name;    this.age = age;    thhi.showMsg = function(){      alert(this.name + this.age);    }}
同上,创建每个对象都会创建一个函数,为了避免出现这种情况,我们可以写成如下:
function Person(name.age){    this.name = name;    this.age = age;    this.showMsg = showMsg;}function showMsg(){    alert(this.name+this.age);}
用法:
var person = new Person("hmj",25);person.showMsg();

对构造函数的解释:构造函数,顾名思义就是生产函数的一个函数。当代码运行到行数内部的时候会首先创造一个对象,且这个对象只有this能够访问。
当我们的构造函数通过this对这个对象进行一系列操作后,在行数执行的最后,隐式返回这个对象。这就是为什么构造函数不需要返回值的原因(java也是一样吧)。

4、利用原型的方法构造对象,利用对象的prototype属性。
function person(){};person.prototype.name = "name";person.prototype.age = 25;person.prototype.showMsg = function(){    alert(this.name+this.age);}
用法:
<div class="quote_title">引用
页: [1]
查看完整版本: javascript对象创建----六大步靠齐java