Javascript 对象的两种写法的区别


第一种


 var mybase = {
    getFormatDate:function(){
        return '里面';
    }
};

第二中


 var mybase = {}
mybase.test = function(){
    return '外面';
}

这两种有什么差别

javascript对象 JavaScript

Mammoth 10 years, 1 month ago

题主应该这样问会好理解一点,“将对象的属性和方法写在『里面』和写在对象『外面』,那个好?”

@sobranie 同学观点一样,这两种方式在对对象的属性和方法是没有任何影响的,没有好坏之分。

第一种,将对象的属性和方法写在『里面』,会重置对象,那么对象之前的属性和方法丢失;
第二种,将对象的属性和方法写在『外面』,可以在已有的对象里添加属性和方法。

那么使用场景:
1. 当你不想清空对象之前的属性和方法时,请用第二种。
2. 当你知道这个对象之前没有被创建过,两个都可以。

vincere answered 10 years, 1 month ago

调用函数时返回一下 this ,两者不是一样的吗?


 var mybase1 = {
    a:'mybase1',
    test1:function(){
        console.log(this);
    }
};
mybase1.test1(); //Object {a: "mybase1", test1: function}


var mybase2 = {};
    mybase2.b = 'mybase2';
    mybase2.test2 = function(){
        console.log(this);
    };
mybase2.test2(); //Object {b: "mybase2", test2: function}

右·菲利普 answered 10 years, 1 month ago

明显是第一种嘛!
没看到 第一种可以少写个对象名字。

蚊子0113 answered 10 years, 1 month ago

你写个例子比较简单,体现不出这样做有什么区别,对于功能、this等,这两个没有明显区别。


 var a = {
    X: '...'
}

之后如果你再给a添加一个Y属性,就不能这么写:


 var a = {
    Y: '...'
}

这样X属性就丢了,你就得这么写


 var a = {
    X: '...',
    Y: '...'
}

但是这样你就得把a的属性重写一遍,或者直接


 a.Y = '...'

这样就是第二种方法了。

对于js的对象,只要你写了a = {...},都是对原来a对象的覆盖,而a.Y = '...'仅仅是对某一个属性的覆盖,比较安全

klesdia answered 10 years, 1 month ago

Your Answer