能夠轉換爲字符串來判斷。舉例:javascript
obj = { a: 1, b: 2 } obj2 = { a: 1, b: 2 } obj3 = { a: 1, b: '2' } JSON.stringify(obj) == JSON.stringify(obj2);//true JSON.stringify(obj) == JSON.stringify(obj3);//false
在調用 new 操做符的過程當中,執行了如下四個步驟:
let obj = new Object(); let Con = [].shift.call(arguments); obj.__proto__ = Con.prototype
3.綁定 this: apply;
4.返回新對象;java
用一句話來講就是:數組
new 操做符新建了一個空對象,這個對象原型指向構造函數的prototype,執行構造函數後返回這個對象。
淺拷貝和深拷貝,這裏一般是指將一個對象A賦值給另外一個變量B。當A修改的時候,若是B也跟着變化,這個就是淺拷貝,若是B沒有變化,這個叫作深拷貝。app
能夠經過直接將對象賦值給變量的方式實現淺拷貝。舉例:函數
let a = [1, 2, 3]; let b = a; a[0] = 4; b[0] // 4
let a = { age: 1 } let b = Object.assign({}, a) a.age = 2 console.log(b.age) // 1
2.展開運算符。舉例:性能
let a = { age: 1 } let b = {...a} a.age = 2 console.log(b.age) // 1
3.JSON方法:this
主要是經過JSON.parse()和JSON.stringify()的搭配來實現深拷貝。舉例:
let a = { age: 1, jobs: { first: 'FE' } } let b = JSON.parse(JSON.stringify(a)) a.jobs.first = 'native' console.log(b.jobs.first) // FE
4.jQuery的extend()方法
因爲如今項目中用jQuery相對較少,用到的時候能夠單獨去查該API。
5.遞歸
這個主要是針對對象的元素不是一維元素,元素自己可能也爲對象或者數組,甚至子元素的子元素也是對象或者數組的時候,從根本上去實現深拷貝。prototype