JavaScript中创建类/对象的几种方法总结

 更新时间:2013年11月29日 09:10:20   作者:  
这篇文章主要是对JavaScript中创建类/对象的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助

在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。

JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。

一、由一对大括号括起来

复制代码 代码如下:

var emptyObj = {};
    var myObj =
    {
        'id': 1,        //属性名用引号括起来,属性间由逗号隔开
        'name': 'myName'
    };
    //var m = new myObj(); //不支持

不知你注意到对象都是用 var 声明的没有,像上面的代码,就只是简单的声明一个对象,它只有一份拷贝,你不能像实例化类对象一样对它采用new操作,像上面代码的注释部分。这样就极大的限制了对象的重用,除非你建立的对象只需要一份拷贝,否则考虑用其他方法建立对象。

下面一起看看如何访问对象的属性和方法。

复制代码 代码如下:

var myObj =
    {
        'id': 1,
        'fun': function() {
            document.writeln(this.id + '-' + this.name);//以"对象.属性"方式访问
        },
        'name': 'myObj',
        'fun1': function() {
            document.writeln(this['id'] + '+' + this['name']);//以集合方式访问
        }
    };
    myObj.fun();
    myObj.fun1();
    // 结果
    // 1-myObj 1+myObj

二、用 function 关键字模拟 class

在 function 中用 this 引用当前对象,通过对属性的赋值来声明属性。如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。

复制代码 代码如下:

function myClass() {
            this.id = 5;
            this.name = 'myclass';
            this.getName = function() {
                return this.name;
            }
        }
        var my = new myClass();
        alert(my.id);
        alert(my.getName());
        // 结果
        // 5
        // myclass

三、在函数体中创建一个对象,声明其属性再返回

在函数体中创建对象可利用第一点的方法,或先 new Object(); 再为各属性赋值。

不过用这种方式创建的对象在VS2008 SP1中是没有智能提示的。

复制代码 代码如下:

function myClass() {
            var obj =
            {
                'id':2,
                'name':'myclass'
            };
            return obj;
        }
        function _myClass() {
            var obj = new Object();
            obj.id = 1;
            obj.name = '_myclass';
            return obj;
        }
        var my = new myClass();
        var _my = new _myClass();
        alert(my.id);
        alert(my.name);
        alert(_my.id);
        alert(_my.name);

        // 结果
        // 2
        // myclass
        // 1
        // _myclass

相关文章

  • js实现的日期操作类DateTime函数代码

    js实现的日期操作类DateTime函数代码

    感觉js自带的Date类型对象用起来不是很方便,照着C#的DateTime做了一个
    2010-03-03
  • 小程序实现计算器功能

    小程序实现计算器功能

    这篇文章主要为大家详细介绍了小程序实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • JavaScript检测上传文件大小的方法

    JavaScript检测上传文件大小的方法

    这篇文章主要介绍了JavaScript检测上传文件大小的方法,涉及javascript针对上传文件的相关判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 微信小程序实现音频文件播放进度的实例代码

    微信小程序实现音频文件播放进度的实例代码

    这篇文章主要介绍了微信小程序实现音频文件播放进度的实例代码,代码包括对进度条的实现及进度条的滑动,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • JavaScript判断浏览器版本的方法

    JavaScript判断浏览器版本的方法

    这篇文章主要介绍了JavaScript判断浏览器版本的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • JS猜数字游戏实例讲解

    JS猜数字游戏实例讲解

    这篇文章主要为大家详细介绍了JS猜数字游戏实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • JS实现的DIV块来回滚动效果示例

    JS实现的DIV块来回滚动效果示例

    这篇文章主要介绍了JS实现的DIV块来回滚动效果,结合实例形式分析了JS通过时间函数定时触发动态改变页面元素样式的相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • iconfont的N种使用方法小结

    iconfont的N种使用方法小结

    使用iconfont字体图标可以随意改变大小,避免图片放大失真问题,但是值得注意,修改字体图标大小的时候使用font-size属性,并且颜色可随意更改,本文给大家介绍iconfont的N种使用方法,感兴趣的朋友一起看看吧
    2024-01-01
  • 解决js相同的正则多次调用test()返回的值却不同的问题

    解决js相同的正则多次调用test()返回的值却不同的问题

    今天小编就为大家分享一篇解决js相同的正则多次调用test()返回的值却不同的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • JavaScript字符串_动力节点Java学院整理

    JavaScript字符串_动力节点Java学院整理

    JavaScript中的字符串就是用''或""括起来的字符表示。下面通过本文给大家介绍JavaScript字符串的相关知识,感兴趣的朋友一起看看吧
    2017-06-06

最新评论