溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

js如何傳一個(gè)對(duì)象

發(fā)布時(shí)間:2020-09-25 09:18:03 來(lái)源:億速云 閱讀:248 作者:小新 欄目:web開(kāi)發(fā)

小編給大家分享一下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è)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

js
AI