解決:什麼時候什麼樣的引數傳遞,會修改外部引數。
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...