您好,登錄后才能下訂單哦!
小編給大家分享一下js如何傳一個(gè)對(duì)象,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
高程中講到:‘ECMAScript 中所有函數(shù)的參數(shù)都是按值傳遞’。
這就像把值從一個(gè)變量復(fù)制到另一個(gè)變量一樣。
那引用類(lèi)型的值也是像基本類(lèi)型一樣?
例子1:
var person = { name : "leaf" }; function obj(o){ o.name = "kafu"; return o; } var result = obj(person); console.log(result.name);// kafu console.log(person.name);// kafu
怎么咋看結(jié)果都是看似引用類(lèi)型的參數(shù)是按照引用傳遞的樣子呢?
例子2:
var person = { name : "leaf" }; function obj(o){ o = { name : "kafu" }; return o; } var result = obj(person); console.log(result.name);// kafu console.log(person.name);// leaf
區(qū)別:
例子一中,把person傳到obj()中,其實(shí)就是把person對(duì)象的引用復(fù)制一份,傳遞給o(可以看成一個(gè)地址),person和o同時(shí)指向一個(gè)對(duì)象,o中修改那么屬性,其實(shí)就修改了他們共同指向的對(duì)象的name屬性。因?yàn)閮?nèi)存區(qū)此時(shí)就只有一個(gè)對(duì)象。
例子二種,o地址指向了另外新建的對(duì)象,此時(shí)內(nèi)存中就有了兩個(gè)對(duì)象,o指向的新對(duì)象的任意改變,對(duì)原來(lái)person指向的舊對(duì)象是沒(méi)有什么影響的。
為什么說(shuō)‘ECMAScript 中所有函數(shù)的參數(shù)都是按值傳遞’。
基本類(lèi)型就不說(shuō)了。
對(duì)于引用類(lèi)型,參數(shù)的傳遞是傳遞對(duì)象的引用副本。相當(dāng)于傳遞了一份拷貝之后的新地址,這拷貝地址其實(shí)也可以理解為按值傳遞(也叫共享傳遞)了。
利用對(duì)象作為參數(shù)傳遞
當(dāng)用對(duì)象作為參數(shù)傳遞的時(shí)候,可以不用考慮參數(shù)的順序,這點(diǎn)很有用。
以上是js如何傳一個(gè)對(duì)象的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。