• Javascript高级编程学习笔记(20)—— 创建对象


    由于今天有点事,加上对象原型链的东西有点多,所以今天这篇就讲一个小的知识点吧

    也算为明天的对象继承做铺垫

    工厂模式

    虽然使用对象字面量来创建一个对象十分地便捷,但是这个方法有一个显著的缺点

    那就是如果我们需要为一个接口创建多个对象,那么将会产生大量的重复代码

    所以工厂模式氤氲而生

    所谓工厂模式,也就是让我们的代码成为一个工厂,通过这个工厂我们可以源源不断地产生同一产品

    其大体实现如下

    function createPerson(age,job,name){
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function(){
            alert(o.name);
        }
        return o;
    }

    通过上面这样一种方式我们就可以很便捷地生成一种具有三个属性一个方法的对象

    虽然这种方法解决了重复代码的问题,但是还有一个问题,对于多个相似的对象我们如何识别对象类型的问题

    也就是说这样的方式我们没法判断对象的类型

    构造函数模式

    刚才的问题,构造函数模式就是答案

    通过该模式我们就可以使用 instanceof 操作符来判断一个对象的类型

    以刚才的工厂模式创建的对象举例

    其构造函数模式基本实现如下:

    function Person(age,job,name){
        this.age =age;
        this.name = name;
        this.job = job'
        this.sayName = function(){
            alert(this.name);
        }
    }

    这种方法在使用上也与工厂模式有所区别,工厂模式实际上就是封装了创建一类对象的函数

    而构造函数模式不能直接调用,如果直接调用将会为全局对象(window)创建age、name、job、sayName几个属性

    要使用 new  操作符来进行调用

    new操作符实现的功能在前几篇文章中已经详细介绍了

    这里就不再赘述

    原型模式

    虽然构造函数解决了识别对象类型的问题

    但是还有一个问题,拿刚才的例子来说,构造函数为每一个实例都创建了一个sayName的函数

    而实际上这一步骤是没有必要的

    这样如果创建了大量实例的情况下,会占用浏览器大量的内存

    为了解决这一问题,原型模式诞生了

    由于这里会涉及到原型链相关的东西,具体内容留到明天详细介绍

  • 相关阅读:
    CentOS中用top命令CPU负载
    Oracle文档阅读指南
    修改oracle用户密码永不过期
    让secureCRT以命令行方式启动图形界面
    .NET 2.0 SQL依赖注意事项(转载:原文《使用SQL Server 2005 Query Notification的几个注意事项》)
    SQL Server 2005服务状态管理工具
    一个常用的正则表达验证类
    解决TFS中MSBuild开发项目和开发编译中一些冲突(小技巧)
    ASP.NET 2.0 WebService中传递DataTable参考
    LightningFramework系列(各层详细设计类图)
  • 原文地址:https://www.cnblogs.com/lhyxq/p/10165211.html
Copyright © 2020-2023  润新知