JavaScript学习笔记(二)——创建对象

在前一节说过,类型可以划分为基础类型和引用类型两大类,而每个对象都是基于一个引用类型创建的。

创建对象的模式有很多种。

一、工厂模式

工厂模式是软件工程领域一种广为人知的设计模式,开发人员可以编写一种函数,用函数进行封装,通过特定的接口来创建对象,举例说明。

function createPerson(name,age){
    var o=new Object();
    o.name=name;
    o.age=age;
    o.show=function(){
        alert(this.name);
    };
    return o;
}
var person=createPerson("Tom",18);
person.show();  //Tom

这种模式可以解决创建多个相似对象的问题,但是没有解决对象识别的问题。

二、构造函数模式

使用构造函数模式必须使用new操作符,调用构造函数时会经历以下四个步骤:

(1)创建一个新对象

(2)将构造函数的作用域赋给新对象(因此,this就指向了这个新对象)

(3)执行构造函数中的代码(为新对象添加属性)

(4)返回新对象

function Person(name,age){
    this.name=name;
    this.age=age;
    this.show=function(){
        alert(this.name);
    };
}
var person=new Person("Tom",18);
person.show();  //Tom

创建自定义的构造函数意味着将它的实例标识为一种特定类型,这正是它胜过工厂模式的地方。但是这种模式仍然有它的缺陷,每一个实例都需要重新创建一个新的function。

三、原型模式

无论什么时候,只要创建一个新函数,就会为这个函数创建一个prototype属性。在默认情况下,所有prototype属性都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。

用途是可以让所有对象实例包含它的属性和方法。

function Person(){
    Person.prototype.name="Tom";
    Person.prototype.age=19;
    Person.prototype.show=function(){
        alert(this.name);
    };
}
var person1=new Person();
var person2=new Person();
person1.show();  //Tom
person2.show();  //Tom

但是使用这种方法就让我们的实例包含相同的属性了,在实际中我们会将这些模式组合起来进行使用。

组合使用了构造函数模式和原型模式,这种模式也是我们定义引用类型的默认模式。

function Person(name,age){
    this.name="Tom";
    this.age=19;
}
Person.prototype={
    show=function(){
        alert(this.name)
    }
}
var person1=new Person("Tom",19);
var person2=new Person("Alice",10);
person1.show();  //Tom
person2.show();  //Alice

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值