关闭搜索(ESC)
搜索标签:

小撸Object

2015-11-04 浏览:575 标签: Object

起跑

既然撸,那么让我们撸一个对象压压惊:

var obj = new Object();

Object,在就是一个添加值的容器。

讲一点有趣的

Object.freeze(obj)

对对象已经冷冻,让obj无法修改,删除。

var obj = {
  foo: 'abc',
  zoo: 'efg',
  test: 'hijk'
};
var o = Object.freeze(obj);

Object.isFrozen(obj)

判断是否冷冻

var obj = {
  foo: 'abc',
  zoo: 'efg',
  test: 'hijk'
};
console.log('----初始输出----');
console.log(obj);

obj.foo = '改一下';
obj.zoo = '再改一下';

console.log('----修改后----');
console.log(obj);

var o = Object.freeze(obj);

obj.foo = '我就要改';
console.log('----加冻后----');
console.log(obj);
console.log('是否冻住'+Object.isFrozen(obj));

搞一些细节的

深拷贝&&浅拷贝

浅拷贝就是增加一个指针指向已经存在的内存, 深拷贝就是增加一个内存和增加一个指针,将这个指针指向新加的内存

代码描述一下浅拷贝:

var arr = ['a','b','c'];
var arr2 = arr;
arr2[0] = 'abcd';
console.log(arr); // ['abcd','b','c']
console.log(arr2); // ['abcd','b','c']

浅拷贝会修改之前的对象。有时候需要复制之前的对象,但是不要修改之前的对象。

var cloneObj = function(obj) {
    var str, newObj = obj.contructor === Array ? []:{};
    if(typeof obj !== 'Object') {
        return ;
    } else {
        if(window.JSON) {
            str = JSON.stringify(obj);
            newObj = JSON.parse(str);
        } else {
            for(var i in obj) {
                newObj[i] == typeof obj[i] === 'Object'?cloneObj(obj[i]):obj[i];
            }
        }
    }
    return newObj
}
添加评论