js 關於function 的所有疑惑點

2021-09-19 17:07:05 字數 1132 閱讀 8291

解決:什麼時候什麼樣的引數傳遞,會修改外部引數。

1.引數傳入function的過程,是乙個值複製的過程。但是引用物件(object array function)儲存的是,指標位址,所以傳入的也是指標位址。這樣,記憶體中就保持了兩個相同的位址,指向同乙個物件。

詳細解釋下:function 傳參過程

function change(config)

var obj =

change(obj);

呼叫function的時候,會進行引數的值傳遞。

obj = 乙個物件嗎?錯,是物件在堆裡的記憶體位址,

config = obj,是把物件的記憶體位址複製給config。這樣config和obj指向同乙個物件,config可以修改外部物件了

var obj1 = ;

var obj2 = ;

function changestuff(obj)

var foo = changestuff(obj1);

console.log(foo);// '222' 引數obj指向了新的物件obj2

console.log(obj1.value);//333

理解了這個,就理解了function裡的傳值了

參考文獻:

解釋的超級清楚:

mdn官方文件

當我們擁有可以改變this指標的fn時候,我們可以做什麼呢?

尋找陣列最大值

var number = [2,34,43,5,6,6]

math.max(2,34,43,5,6,6)//因為max方法,不接受陣列引數

用的比較多的,通過document.getelementsbytagname選擇的dom 節點是一種類似array的array。

它不能應用array下的push,pop等方法。我們可以通過:

var domnodes = array.prototype.slice.call(document.getelementsbytagname("*"));

這樣domnodes就可以應用array下的所有方法了。

也就是說,在沒有傳入引數的時候,通過call可以讓我們的obj擁有其他obj的方法

js關於Function和Object的原型的理解

我們在 function 和 object 的關係之前。可以先不討論 object的特殊性,先考慮function的特殊性。我們在 小紅書資料型別一章講到 object 通過物件直面量和 通過建構函式的方式建立的 物件例項是有差別的。我們先通過 來感受一下這些差別 function object v...

JS 語言的Function 解析

1.最基本的作為乙個本本分分的函式宣告使用。複製 如下 function func 或 var func function 2.作為乙個類構造器使用 複製 如下 function class class.prototype var item new class 3.作為閉包使用 複製 如下 func...

js 中的Function型別

函式的建立有兩種方式 二者基本等價,除了 什麼時候可通過變數訪問函式的區別,以下將舉例證明。以函式宣告的方式來建立,那麼不論在什麼時候訪問函式,都是正確的,因為解析器有函式宣告提公升。sayhello function sayhello 以函式表示式方式來建立,那麼只能在建立之後才能訪問。sayhe...