创建Javascript对象的途径/方式


/*
Tips:
        JS中所有的对象实例都是Object的实例,即:ins instanceof Object == true,ins包括window/Sring/Array等对象的实例,以及自定义对象的实例
只有在window对象下,this关键字等于window,在其他对象中,this == [object Object](有待商榷)
this关键字总是指向调用this关键词的方法所属的对象的实例
*/

1、通过Object对象实例化,然后在外部添加属性/方法(原始模式)

var obj = new Object();

obj.v = '';

obj.func = function()
{
     //...  
}

2、通过构造函数实例化,然后在外部通过prototype添加属性,或者在构造函数里面直接定义属性

(只在外部定义属性,是原型模式,只在内部定义属性,为构造函数模式,内外都定义,即混合原型/构造函数模式)

//原型模式
function obj()
{
}

obj.v = '';

obj.prototype.v2 = '';

var instance = new obj();

//构造函数模式
function obj()
{
    this.v = '';

    this.func = function()
    {
        //...
    }
}

var instance = new obj();

//混合原型/构造函数模式
function obj()
{
    this.v = '';
    this.func = function()
    {
        //...
    }
}

obj.prototype.v2 = '';

obj.prototype.func2 = function()
{
    //...
}

var instance = new obj();

3、通过JSON方式,使用对象字面量,直接在里面定义属性(呃,确切的说,我不知道这么方式怎么来的,我还没搞懂“字面量”)

//对象字面量创建的对象属于Object对象的一个实例,本身就是对象实例,所以不能再实例化
var obj = 
{
    v : '',
    func : function()
    {
        //...
    }
}

4、定义一个函数,在函数里面通过方式1定义对象,最后返回对象变量
(外部调用函数时,函数名前加new关键字即为混合工厂模式,不加new,即工厂模式)

function getObj()
{
    var obj = new Object();
    
    obj.v = '';
    
    obj.func = function()
    {
        //...
    }
    
    return obj;
}

//工厂模式
var obj = getObj();

//混合工厂模式
var obj = new getObj();

优质内容筛选与推荐>>
1、中秋祝福
2、h5键盘的的一些坑
3、vs利用正则表达式统计代码行数
4、Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园
5、教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn