值類型和引用類型
- 可以使用
typeof
來進行判斷占业,typeof
可以判斷出所有的值類型
let a;
const str = 'abc';
const b = true;
const s = Symbol('s');
typeof a; // undefined
typeof str; // string
typeof b; // boolean
typeof s; // symbol
typeof console.log; // function
typeof function () {}; // function
-
typeof
能識別出引用類型宰翅,但是不能再繼續(xù)識別
typeof null // object
typeof [ 'a', 'b' ] // object
typeof { x: 100 } // object
深拷貝的實現(xiàn)
const obj = {
age: 20,
name: 'xxx',
address: {
city: '成都',
},
arr: ['a', 'b', 'c']
}
function deepClone(obj = {}) {
if (typeof obj !== 'object' || obj == null) {
return obj
}
let result
if (obj instanceof Array) {
result = []
} else {
result = {}
}
for (let key in obj) {
// 保證 key 不是原型的屬性
if (obj.hasOwnProperty(key)) {
// 遞歸
result[key] = deepClone(obj[key])
}
}
return result
}