摘要:原始類型和引用類型原始類型存儲簡單數據值,引用類型存儲對象,其本質是指向內存位置的應用。保存指向內存中實際對象所在位置的指針鑒別引用類型操作符以一個對象和一個構造函數為參數。這些特殊引用類型的存在使得原始引用類型用起來和對象一樣方便。
原始類型和引用類型
1.原始類型存儲簡單數據值,引用類型存儲對象,其本質是指向內存位置的應用。
注:其他編程語言用棧存儲原始類型,用堆存儲引用類型。JavaScript原始值被保存在變量對象內,而引用值則作為一個指針保存在變量對象內,該指針指向實際對象在內存中的存儲位置。
2.原始類型:boolean,number,string,null,undefined。原始類型的變量直接保存原始值(而不是一個指向對象的指針),也就是說,當你將原始值賦值給一個變量時,該值被復制到變量中,每一個變量都有它自己的一份數據拷貝。
var name = "張三"; var age = 18; var show = true; var object = null; var flag = undefined; // 一個變量的改變并不會影響到其他變量 var color1 = "red"; var color2 = color1; console.log(color1); // red console.log(color2); // red color2 = "blue"; console.log(color1); // red console.log(color2); // blue
3.引用類型:引用類型不在變量中保存對象,所以例子中的object變量實際上并不包含對象的實例,而是一個指向內存中實際對象所在位置的指針(或者說是引用)。這就意味著,當你將一個對象賦值給變量時,實際上賦值給這個變量的是一個指針。也就是說,這兩個變量指向內存中的同一個對象。
var object = new Object(); //保存指向內存中實際對象所在位置的指針
4.鑒別引用類型
instanceof操作符以一個對象和一個構造函數為參數。如果對象是構造函數所指定的類型的一個實例,instanceof返回true;否則返回false。intanceof操作符可鑒別繼承類型,意味著所有的引用類型都繼承Object。
var items = []; var object = {}; function reflect(value){ return value; } console.log(items instanceof Array); // true console.log(object instanceof Object); // true console.log(reflect instanceof Function); // true
5.鑒別數組
當JavaScript的值在同一個頁面不同框架之間傳來傳去,再用instanceof來鑒別引用類型的時候,就可能出現問題,因為每一個框架都有它自己的全局上下文--Object、Array以及其他內建類型的版本。所以,當你把數組從一個框架傳到另一個框架時,instanceof就無法識別,因為該數組是來自不同框架的Array的實例。所以這個時候,得用Array.isArray()方法來鑒別數組,該方法只兼容IE9及以上。
6.原始封裝類型
原始封裝類型共有3種,(String,Number和Boolean)。這些特殊引用類型的存在使得原始引用類型用起來和對象一樣方便。例如:
var name = "張三"; var firstChar = name.charAt(0); console.log(firstChar); // 張 // 背后發生的事情 var name = "張三"; var temp = new String(name); var firstChar = temp.charAt(0); temp = null; console.log(firstChar); // 張 var name = "張三"; name.last = "王五"; console.log(name.last); // undefined // 背后發生的事情 var name = "張三"; var temp = new String(name); temp.last = "王五"; temp = null; var temp = new String(name); console.log(temp.last); // undefined temp = null;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83589.html
摘要:原文鏈接一個變量可以存放兩種類型的值,基本類型的值和引用類型的值。引入了一種新的原始數據類型,表示獨一無二的值。 原文鏈接 一個變量可以存放兩種類型的值,基本類型的值(primitive values)和引用類型的值(reference values)。 ES6 引入了一種新的原始數據類型 Symbol,表示獨一無二的值。它是 JavaScript 語言的第七種數據類型,前六種是:Un...
摘要:結合實際中的情況來看,有意或無意中涉及到隱式類型轉換的情況還是很多的。此外當進行某些操作時,變量可以進行類型轉換,我們主動進行的就是顯式類型轉換,另一種就是隱式類型轉換了。 前言 相信剛開始了解js的時候,都會遇到 2 ==2,但 1+2 == 1+2為false的情況。這時候應該會是一臉懵逼的狀態,不得不感慨js弱類型的靈活讓人發指,隱式類型轉換就是這么猝不及防。結合實際中的情況來看...
摘要:它對數組和對象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執行期間存儲在堆棧中。返回值這是可選的,函數可以返回值,也可以不返回值。變量被推入堆棧,從而在執行時成為的副本。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 22 篇。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 如果你錯過了前面的章節,可...
摘要:它對數組和對象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執行期間存儲在堆棧中。返回值這是可選的,函數可以返回值,也可以不返回值。變量被推入堆棧,從而在執行時成為的副本。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 22 篇。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 如果你錯過了前面的章節,可...
摘要:返回布爾值,表示參數字符串是否在原字符串的頭部。布爾值中布爾值有兩個和和都表示值的空缺,但事從背后更深遠的角度考慮,他們的還是有差別的。首先我們來看一下類型轉化表任意的值都可以轉換為布爾值,只有會被轉換為,其他所有值都會被轉換成。 開辟了一個關于javascript的基礎系列,更加深入、細致的了解這門語言。今天分享的是js的數據類型。 javascript的數據類型可以分為兩類:原始類...
閱讀 3043·2021-09-03 10:33
閱讀 1270·2019-08-30 15:53
閱讀 2618·2019-08-30 15:45
閱讀 3379·2019-08-30 14:11
閱讀 527·2019-08-30 13:55
閱讀 2581·2019-08-29 15:24
閱讀 1906·2019-08-26 18:26
閱讀 3558·2019-08-26 13:41