• JavaScript的对象观


     JavaScript的对象观


        众所周知,目前的JavaScript实现了ECMA262规范,是基于对象的。未来的JavaScript2.0具说是面向对象同时向后兼容亦可使用基于对象的手法,但在还未看到正式运行版前就不讨论了。
        基于对象。什么是基于对象呢?关于这个问题,初学者通常会与面向对象相对混淆。那到底什么是基于对象呢?要认定(纯粹个人看法)基于对象不等于面向对象; 基于对象的层次是高于面向对象的;基于对象是使用已经存在的对象或扩展已经存在的对象,而面向对象是设计或抽象出一个新的对象来,同时该对象具有继承、多 态、封装等特点。从另一个角度也可以认为基于对象是站在面向对象的肩膀上的。
        既然基于对象是站在面向对象的肩膀上的,那么基于对象语言自然拥有面向对象语言的特征,如JavaScript(本文围绕它来说,其他还有 ActionScript等)。那JavaScript是如何完成面向对象的呢?呵呵,这就是刚才为什么说那么多废话的原因了。本文的宗旨就是将阐述如何 在JavaScript 中使用面向对象。
        在《征服RIA——基于JavaScript的Web客户端开发》一书的第二部分《第二部分 JavaScript高级篇》简单阐述了JavaScript的对象特性。没错!正由于这些特性才造就了如今的JavaScript(忘记在那里见过这样 一种说法——JavaScript的设计者似乎都没发现JavaScript有这么多特性)。
        对象的创建、使用、继承等方式在这里就不啰嗦了,大家可以参考《征服RIA——基于JavaScript的Web客户端开发》的高级篇,当然了也欢迎拍砖呀。(本人经常上的blog——http://hi.baidu.com/nathena/)
        在面向对象编程的世界里往往离不开设计模式。自然现在我们谈到了面向对象,自然也引入了设计模式。哈哈,看到这里你是否觉得有种上当得感觉呢?对了说了好多好多,只是想说我要介绍JavaScript中的设计模式。恩,不废话。现在简单的介绍几种
        singletion(单例)
        可查看http://hi.baidu.com/nathena/blog/item/714948dd65b25e325882dd0d.html
    var Singletion = {
    constructor:function()
    {
    //保证实例的唯一性
    //注意不能使用this
    return Singletion;
    },

    basePay:4500,
    allowance:200,
    duty:2000,
    other:3000,
    affixation:1000
    }

    var a = Singletion;
    var c = new (Singletion.constructor)();
    alert(a===c)
        适配器(Adapter)
        可查看http://hi.baidu.com/nathena/blog/item/12b9882c7887a3eb8a1399af.html
    funtion Stack()
        {
            //适配JS数组接口
            var d = [];
            //实际需要为仅提供peek、pop、push、search、isEmpty
            this.peek =function()
            {
                return d[0];
            }

            this.pop = function()
            {
                return d.pop();
            }

            this.search=function( o)
            {
                for(var i=0;i<d.length;i++)
                {
                    if( d[i] == o )
                        return i;
                }
            }
            this.isEmpty = function()
            {
                return d.length==0?true:false;
            }
        }
        composite组合模式
    var Win = function()
    {
        
    }

    var Wall = function()
    {
    }

    var Door = function()
    {
    }
    var Room = function()
    {
        this.win = new Win();
        this.Wall = new Wall();
        this.Door = new Door();
    }
    And so on ……………..
    更多可以参看
    http://hi.baidu.com/nathena/blog/category/web%C7%B0%B6%CB%BC%BC%CA%F5
    可拍砖,欢迎拍砖!!!

  • 相关阅读:
    mssql sqlserver 表增加列后,视图不会自动更新相关列的两种解决方法分享
    未能加载文件或程序集“**********”或它的某一个依赖项。试图加载格式不正确的程序。
    批量删除MSSQL 中主外键约束
    mssql sqlserver xml数据类型专题
    mssql sqlserver for xml EXPLICIT 用法详解说明
    mssql sqlserver null数据类型专题
    Nginx Location模块
    Nginx 服务器的安装部署(CentOS系统)
    Nginx服务器的平滑启动、平缓停止、平滑升级
    CentOS如何配置yum源
  • 原文地址:https://www.cnblogs.com/broadview/p/1452363.html
Copyright © 2020-2023  润新知