生活随笔
收集整理的這篇文章主要介紹了
第四章(变量、作用域、内存问题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本類型的值在內存中固定大小的空間,引用類型的值是對象,保存在堆內存中
閉包的理解:
- http://www.cnblogs.com/dolphinX/archive/2012/09/29/2708763.html
- https://segmentfault.com/a/1190000000652891
- http://www.maintao.com/2015/js-functional-programming-1/
閉包的應用場景:
setTimeout/setInterval回調函數(callback)事件句柄(event?handle)保護函數內的變量安全:如迭代器、生成器。在內存中維持變量:緩存數據、柯里化。保護內部變量防止污染上層作用域避免全局變量的污染私有成員的存在模塊化代碼---jq插件 JS中, this的值取決于調用的模式, 而JS中共有4中調用模式:1
. 方法調用模式
當一個函數被保存為對象的一個屬性時, 我們稱它為一個方法, 當一個方法被調用時, this指向該對象, 如:
var obj =
{
value: 1
,
getValue: function() {
alert(this.value);
}
};
obj.getValue(); // 輸出1, 此時的this指向obj
注意: 該模式中, this到對象的綁定發生在方法被調用的時候.2
. 函數調用模式
當一個函數并非一個對象的屬性時, 它被當作一個函數來調用, 此時的this指向全局對象(window), 如:
window.value = 1
;
function getValue() { alert(
this.value); }
getValue(); // 輸出1, 此時的this指向window.3
. 構造器調用模式
結合new前綴調用的函數被稱為構造器函數, 此時的this指向該構造器函數的實例對象, 如:
function show(val) {
this.value =
val;
};
show.prototype.getVal =
function() {
alert(this.value);
};
var func =
new show(1
);
func.getVal(); // 輸出1
alert(func.value)
// 輸出1
// 從上面的結果, 可以看出, 此時的this指向了func對象.4. apply/call調用模式
apply和call方法可以讓我們設定調用者中的this指向誰, 如:
var fun =
function(str) {
this.status =
str;
}
fun.prototype.getStatus =
function() {
alert(this.status);
}
var obj =
{
status: "loading"
};
fun.prototype.getStatus.apply(obj); // 輸出"loading", 此時getStatus方法中的this指向了obj ?
轉載于:https://www.cnblogs.com/mr-pz/p/5906111.html
總結
以上是生活随笔為你收集整理的第四章(变量、作用域、内存问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。