傳遞引數 和 堆

2021-08-01 10:03:09 字數 563 閱讀 2385

棧用來存值;

堆用來存引用;

例項 **:

function

setname

(obj)

var person = new

object(); //物件a

setname(person);

console.log(person.name);

最後輸出為:rui;

順序:

建立新的物件 賦予 變數person

呼叫函式 setname,將 物件變數 person 賦給 函式的引數(obj);

此時 obj 與 person 同樣擁有指標指向 //物件a

obj.name 賦值為 rui // 為a物件的name 賦值

(新物件賦給變數obj)此時函式裡面的 obj變數的指標被更改為指向 新物件b。

對應的 hong 值是物件b的name屬性…

函式的引數均為區域性變數

(當在函式內部重寫obj時,這個變數引用的就是乙個區域性物件了)

退出函式時,該區域性物件會在函式執行完畢後銷毀。

物件引數傳遞中 棧和堆的記憶體分析

物件記憶體的理解 1 物件資料存放在堆裡面,2 基本型別的變數和物件的引用變數都在函式的棧記憶體中分配。特別的 1.陣列是物件。2.string型別是特殊型別 下面有個例子 string str new string good string str2 123 main ex new main ex....

跳轉和傳遞引數

實現card之間跳轉的乙個基本方法是go,go和do anchor等標籤的結合是wml高階應用的乙個基礎。sendreferer 表示是否傳遞呼叫href所指定的url的頁面的url,也就是當前頁的url,即http頭中的http referer,預設值為false,可選值為true method ...

變數和引數傳遞

1 區域性變數和成員變數區別 區別一 定義的位置不同 定義在類中的變數是成員變數 定義在方法中或者 語句裡面的變數是區域性變數 區別二 在記憶體中的位置不同 成員變數儲存在堆記憶體的物件中 區域性變數儲存在棧記憶體的方法中 區別三 生命週期不同 成員變數隨著物件的出現而出現在堆中,隨著物件的消失而從...