摘要:中是確定的,是的引用后面,變成的引用,但中的是確定的,所以在中又加上了深拷貝方法方法一如果這樣寫,對象中的簡單類型是深拷貝,而復雜類型是簡單拷貝方法二循環引用垃圾回收如果一個對象沒有被引用,它就是垃圾,將被引用被賦值后,這個函數不是垃圾
JS 里的類型
number類型轉
`string`:`toString`、String()全局函數、加上空字符串 `boolean:Boolean()全局函數、一個`!`取反,兩個`!`取反在取反
string 類型轉
`number`:Number()全局函數、parseInt()、parseFloat()、`+`、`-0` `boolean`:Boolean()全局函數、一個`!`取反,兩個`!`取反在取反
boolean類型轉
`number`:Number()全局函數、`+`、`-0` `string`:`toString`、String()全局函數、加上空字符串
null類型轉
`number`:Number()全局函數、`+`、`-0` `string`:String()全局函數、加上空字符串 `boolean:Boolean()全局函數、一個`!`取反,兩個`!`取反在取反
undefined類型轉
`string`:String()全局函數、加上空字符串 `boolean:Boolean()全局函數、一個`!`取反,兩個`!`取反在取反
object類型轉
`string`:`toSting`、String()全局函數、加上空字符串 `boolean:Boolean()全局函數、一個`!`取反,兩個`!`取反在取反 `null`: `number`
falsy值:0、NaN、""、null、undefined、false
console.log()利用toString()方法
console.log((1).toString)
簡單類型的數據存儲在棧內存中
復雜類型的數據存儲在堆內存中,棧內存中存儲堆內存中的
淺拷貝:只拷貝堆內存中的地址,如果我們重新賦值,原值會改變;簡單類型拷貝都是深拷貝;
深拷貝:把棧內存中的內容重新拷貝了一份,堆內存中存儲的地址也將變化;如果 b 拷貝 a,改變 b,a 不變是深拷貝;改變 b,a 也跟著變是淺拷貝。
var a = {n:1} var b = a a.x = a = {n:2} //a.x 中 a 是確定的,是{n:1}的引用;后面 a = {n:2},a 變成{n:2}的引用,但 a.x 中的 a 是確定的,所以在{n:1}中又加上了{x:{n:2}} console.log(a.x) //undefined console.log(b.x) //{n:2}
深拷貝方法:
方法一:
var obj = { age:10, friend:{ name:"xiaoming", age:12, hobby:{ sport:"football", foot:"apple" } } } function copy(object){ var newObj = {} for(var key in object){ if(typeof object[key] === "string" || typeof object[key] === "number" || typeof object[key] === "boolean" || object[key] === undefined || object[key] === null){ newObj[key] = obj[key] }else{ newObj[key] = copy(key) } } return newObj } var obj2 = copy(obj)
如果這樣寫,對象中的簡單類型是深拷貝,而復雜類型是簡單拷貝
var obj = { age:10, friend:{ name:"xiaoming", age:12, hobby:{ sport:"football", foot:"apple" } } } function copy(object){ var newObj = {} for(var key in object){ newObj[key] = obj[key] } return newObj } var obj2 = copy(obj)
方法二:
var obj = { age:10, friend:{ name:"xiaoming", age:12, hobby:{ sport:"football", foot:"apple" } } } var obj2 = JSON.parse(JSON.stringify(obj))循環引用
var a = {} a.self = a垃圾回收
如果一個對象沒有被引用,它就是垃圾,將被引用
var fn = function(){} //fn 被賦值 null 后,這個函數不是垃圾 document.body.onclick = fn fn = null
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96588.html
摘要:的數據類型轉換一中的數據類型中的數據類型一共有六種,即,,,,,。數據類型指的是數字,包括整型和浮點數。如布爾類型只有和,用于條件判斷。數據類型的相互轉換任意數據類型轉字符串特殊用法任意數據類型轉數字任意數據類型轉布爾值五個值 JS的數據類型轉換 一、js中的數據類型Js中的數據類型一共有六種,即number,string,boolean,underfine,null,object。 ...
摘要:有七種數據類型注意沒有類型也沒有類型。年,布爾冒著大雨步行兩英里走到講臺,身著打濕的衣服為學生們授課。其妻錯誤地相信疾病需要用致病因子施救,因為布爾是淋雨水而感冒的,妻子于是用桶子裝水淋到他身上。年,月日,布爾死于肺部積水。 JS有七種數據類型:number string boolean symbol undefined null object注意:沒有 array 類型也沒有 fun...
摘要:一任意類型轉換為字符串要大寫這種方法可以將,,轉化為字符串,但是無法轉換,這兩種數據類型要大寫是一個全局函數,功能更強大可以轉換基本上所有類型為字符串這是最簡單最便捷的一種方法,把加上一個空字符串就可以快速將其他類型轉換成字符串二任意類型轉 一、任意類型轉換為字符串 1、x.toString(S要大寫) 這種方法可以將number,boolean,object轉化為字符串,但是無法轉換...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業務需要急需知道如何深拷貝對象的開發者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現思路以及小伙伴們如果使用了這種黑科技一定要清楚這樣寫的優缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業務需要,急需知道如何深拷貝JS對象的開發者。 第二類,希望扎實JS基礎,將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業務需要急需知道如何深拷貝對象的開發者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現思路以及小伙伴們如果使用了這種黑科技一定要清楚這樣寫的優缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業務需要,急需知道如何深拷貝JS對象的開發者。 第二類,希望扎實JS基礎,將來好去面試官前秀操作...
閱讀 2722·2021-11-11 17:21
閱讀 613·2021-09-23 11:22
閱讀 3578·2019-08-30 15:55
閱讀 1641·2019-08-29 17:15
閱讀 573·2019-08-29 16:38
閱讀 904·2019-08-26 11:54
閱讀 2504·2019-08-26 11:53
閱讀 2750·2019-08-26 10:31