thinkuncle / thinkuncle.github.io

thinkuncle
4 stars 0 forks source link

深入了解js #103

Open thinkuncle opened 8 years ago

thinkuncle commented 8 years ago

跟着9张思维导图学习Javascript

thinkuncle commented 8 years ago

JS 一些陌生的概念

use strict

开启严格模式以后,一些js糟糕的特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值。严格模式下的eval函数的行为和非严格模式的也不相同。具体题主可以去查阅一下严格模式到底限制了多少内容

thinkuncle commented 8 years ago

JavaScript 浅复制和深复制

浅拷贝(shallow copy)

浅复制差不多类似java的引用传递,操作复制的对象同步也会操作源对象。

var a={"param1":1};
var b = a;
console.log(a);
b.param1 = 2;
console.log(a);

深拷贝(deep copy)

类似java中的值复制, 操作复制的对象与源对象完全是2个对象,互不影响。

angularJs

var a={"param1":1};
var b = angular.copy(a);;
console.log(a);
b.param1 = 2;
console.log(a);

JS函数

var cloneObj = function(obj){
    var str, newobj = obj.constructor === 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;
};

参考