国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

深入了解JavaScript對(duì)象(1)--原始類型和引用類型

mindwind / 878人閱讀

摘要:原始類型和引用類型原始類型存儲(chǔ)簡(jiǎn)單數(shù)據(jù)值,引用類型存儲(chǔ)對(duì)象,其本質(zhì)是指向內(nèi)存位置的應(yīng)用。保存指向內(nèi)存中實(shí)際對(duì)象所在位置的指針鑒別引用類型操作符以一個(gè)對(duì)象和一個(gè)構(gòu)造函數(shù)為參數(shù)。這些特殊引用類型的存在使得原始引用類型用起來和對(duì)象一樣方便。

原始類型和引用類型

1.原始類型存儲(chǔ)簡(jiǎn)單數(shù)據(jù)值,引用類型存儲(chǔ)對(duì)象,其本質(zhì)是指向內(nèi)存位置的應(yīng)用。

注:其他編程語(yǔ)言用棧存儲(chǔ)原始類型,用堆存儲(chǔ)引用類型。JavaScript原始值被保存在變量對(duì)象內(nèi),而引用值則作為一個(gè)指針保存在變量對(duì)象內(nèi),該指針指向?qū)嶋H對(duì)象在內(nèi)存中的存儲(chǔ)位置。

2.原始類型:boolean,number,string,null,undefined。原始類型的變量直接保存原始值(而不是一個(gè)指向?qū)ο蟮闹羔槪簿褪钦f,當(dāng)你將原始值賦值給一個(gè)變量時(shí),該值被復(fù)制到變量中,每一個(gè)變量都有它自己的一份數(shù)據(jù)拷貝。

var name = "張三";
var age = 18;
var show = true;
var object = null;
var flag = undefined;

// 一個(gè)變量的改變并不會(huì)影響到其他變量
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.引用類型:引用類型不在變量中保存對(duì)象,所以例子中的object變量實(shí)際上并不包含對(duì)象的實(shí)例,而是一個(gè)指向內(nèi)存中實(shí)際對(duì)象所在位置的指針(或者說是引用)。這就意味著,當(dāng)你將一個(gè)對(duì)象賦值給變量時(shí),實(shí)際上賦值給這個(gè)變量的是一個(gè)指針。也就是說,這兩個(gè)變量指向內(nèi)存中的同一個(gè)對(duì)象。

var object = new Object(); //保存指向內(nèi)存中實(shí)際對(duì)象所在位置的指針

4.鑒別引用類型

instanceof操作符以一個(gè)對(duì)象和一個(gè)構(gòu)造函數(shù)為參數(shù)。如果對(duì)象是構(gòu)造函數(shù)所指定的類型的一個(gè)實(shí)例,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.鑒別數(shù)組
當(dāng)JavaScript的值在同一個(gè)頁(yè)面不同框架之間傳來傳去,再用instanceof來鑒別引用類型的時(shí)候,就可能出現(xiàn)問題,因?yàn)槊恳粋€(gè)框架都有它自己的全局上下文--Object、Array以及其他內(nèi)建類型的版本。所以,當(dāng)你把數(shù)組從一個(gè)框架傳到另一個(gè)框架時(shí),instanceof就無法識(shí)別,因?yàn)樵摂?shù)組是來自不同框架的Array的實(shí)例。所以這個(gè)時(shí)候,得用Array.isArray()方法來鑒別數(shù)組,該方法只兼容IE9及以上。

6.原始封裝類型
原始封裝類型共有3種,(String,Number和Boolean)。這些特殊引用類型的存在使得原始引用類型用起來和對(duì)象一樣方便。例如:

var name = "張三";
var firstChar = name.charAt(0);
console.log(firstChar);    // 張

// 背后發(fā)生的事情
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

// 背后發(fā)生的事情
var name = "張三";
var temp = new String(name);
temp.last = "王五";
temp = null;

var temp = new String(name);
console.log(temp.last);    // undefined
temp = null;

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/83589.html

相關(guān)文章

  • JavaScript 深入了解基本類型引用類型的值

    摘要:原文鏈接一個(gè)變量可以存放兩種類型的值,基本類型的值和引用類型的值。引入了一種新的原始數(shù)據(jù)類型,表示獨(dú)一無二的值。 原文鏈接 一個(gè)變量可以存放兩種類型的值,基本類型的值(primitive values)和引用類型的值(reference values)。 ES6 引入了一種新的原始數(shù)據(jù)類型 Symbol,表示獨(dú)一無二的值。它是 JavaScript 語(yǔ)言的第七種數(shù)據(jù)類型,前六種是:Un...

    Mr_houzi 評(píng)論0 收藏0
  • 深入js隱式類型轉(zhuǎn)換

    摘要:結(jié)合實(shí)際中的情況來看,有意或無意中涉及到隱式類型轉(zhuǎn)換的情況還是很多的。此外當(dāng)進(jìn)行某些操作時(shí),變量可以進(jìn)行類型轉(zhuǎn)換,我們主動(dòng)進(jìn)行的就是顯式類型轉(zhuǎn)換,另一種就是隱式類型轉(zhuǎn)換了。 前言 相信剛開始了解js的時(shí)候,都會(huì)遇到 2 ==2,但 1+2 == 1+2為false的情況。這時(shí)候應(yīng)該會(huì)是一臉懵逼的狀態(tài),不得不感慨js弱類型的靈活讓人發(fā)指,隱式類型轉(zhuǎn)換就是這么猝不及防。結(jié)合實(shí)際中的情況來看...

    tomato 評(píng)論0 收藏0
  • JavaScript 是如何工作的:JavaScript 的共享傳遞按值傳遞

    摘要:它對(duì)數(shù)組和對(duì)象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執(zhí)行期間存儲(chǔ)在堆棧中。返回值這是可選的,函數(shù)可以返回值,也可以不返回值。變量被推入堆棧,從而在執(zhí)行時(shí)成為的副本。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 22 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可...

    keithyau 評(píng)論0 收藏0
  • JavaScript 是如何工作的:JavaScript 的共享傳遞按值傳遞

    摘要:它對(duì)數(shù)組和對(duì)象使用按值傳遞,但這是在的共享傳參或拷貝的引用中使用的按值傳參。例如在這里,變量和值在執(zhí)行期間存儲(chǔ)在堆棧中。返回值這是可選的,函數(shù)可以返回值,也可以不返回值。變量被推入堆棧,從而在執(zhí)行時(shí)成為的副本。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 22 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可...

    陳偉 評(píng)論0 收藏0
  • 【基礎(chǔ)系列】javascript數(shù)據(jù)類型原始類型

    摘要:返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。布爾值中布爾值有兩個(gè)和和都表示值的空缺,但事從背后更深遠(yuǎn)的角度考慮,他們的還是有差別的。首先我們來看一下類型轉(zhuǎn)化表任意的值都可以轉(zhuǎn)換為布爾值,只有會(huì)被轉(zhuǎn)換為,其他所有值都會(huì)被轉(zhuǎn)換成。 開辟了一個(gè)關(guān)于javascript的基礎(chǔ)系列,更加深入、細(xì)致的了解這門語(yǔ)言。今天分享的是js的數(shù)據(jù)類型。 javascript的數(shù)據(jù)類型可以分為兩類:原始類...

    aikin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<