码迷,mamicode.com
首页 > 编程语言 > 详细

javascript创建对象

时间:2015-02-13 18:42:13      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

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 personOne = createPerson("ali",21,"bussiness");

var personTwo = createPerson("baidu",22,"software engineer");

2. 构造函数模式

ECMAScript中的构造函数可以用来创建特定类型的对象,像object和array这样的原生构造函数,在运行时会自动出现在执行环境中。此外,可以自定义构造函数,从而自定义对象类型的属性和方法。

function Person(name,age,job){

        this.name = name;

        this.age = age;

        this.job = job;

        this.sayName = function(){

            alert(this.name);

        };

}

var personOne = new Person("ali",21,"bussiness");

var personTwo = new Person("baidu",22,"software engineer");

创建自定义的构造函数意味着将来可以将它的实例标识为一种特定的类型,这是构造函数模式优于工厂模式的地方。

2.1 将构造函数当作函数

任何函数只要以new操作符来调用就可以当作构造函数,不通过new操作符调用那就和普通函数没什么区别。

//当作构造函数调用

var person = new Person("ali",21,"bussiness");

person.sayName();  //“ali”

//作为普通函数调用

 Person("tengxun",21,"bussiness"); //添加到window

window.sayName();  //“tengxun”

//在另一个对象的作用域中调用

var o = new Object();

Person.call(o,"baidu",25,"anger");

o.sayName(); //"baidu"

2.2 构造函数问题

function Person(name,age,job){

        this.name = name;

        this.age = age;

        this.job = job;

        this.sayName = sayName;

}

function sayName(){

        alert(this.name);

}

var personOne = new Person("ali",21,"bussiness");

var personTwo = new Person("baidu",22,"software engineer");

personOne和personTwo对象就共享了在全局作用域定义的同一个sayName()函数。

2.3 原型模式


javascript创建对象

标签:

原文地址:http://my.oschina.net/myrainspace/blog/378524

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!