捋一捋JavaScript创建对象

本文详细探讨了JavaScript中对象的创建方式(构造函数、对象字面量),以及工厂模式、构造函数模式、原型模式(包括动态原型和寄生构造函数)的优缺点,以及如何结合它们实现对象识别和共享。文章还涉及原型对象的问题和稳妥构造函数的应用场景。
摘要由CSDN通过智能技术生成

回顾前面我们谈到通过object构造函数创建单个对象

// 创建一个object的实例,然后再为它添加属性和方法
var person = new Object();
person.name = "jill";
person.age = 18;
person.job = "software Engineer";

person.sayName = function () {
    alert(this.name);
}

通过对象字面量创建单个对象

var person = {
    name:"jill",
    age:18,
    job:"software Engineer",

    sayName:function () {
        alert(this.name);
    }
}

通过object构造函数或对象字面量创建单个对象的方式有个缺点:使用同一个接口创建很多对象,会产生大量的重复代码

###工厂模式 解决了创建多个相似对象的问题

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 person1 = createPerson('jill',18,'software');
var person2 = createPerson('vane',23,'student');

工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)

###构造函数模式 解决了对象识别的问题,可用来创建特定类型的对象

与工厂模式不同之处:没有显式的创建对象,直接将属性和方法赋给了this对象,没有return语句;创建自定义的构造函数意味着将来可以将它的实例标识为一种特定的类型

function Person(name,age,job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayName = function () {
        alert(this.name);
    }
}
//创建一个新对象-》将构造函数的作用域赋给新对象-》执行构造函数中的代码-
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世事飞驰三百年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值