生活随笔
收集整理的這篇文章主要介紹了
第四章(变量、作用域、内存问题)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基本類型的值在內(nèi)存中固定大小的空間,引用類型的值是對象,保存在堆內(nèi)存中
閉包的理解:
- 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回調(diào)函數(shù)(callback)事件句柄(event?handle)保護函數(shù)內(nèi)的變量安全:如迭代器、生成器。在內(nèi)存中維持變量:緩存數(shù)據(jù)、柯里化。保護內(nèi)部變量防止污染上層作用域避免全局變量的污染私有成員的存在模塊化代碼---jq插件 JS中, this的值取決于調(diào)用的模式, 而JS中共有4中調(diào)用模式:1
. 方法調(diào)用模式
當一個函數(shù)被保存為對象的一個屬性時, 我們稱它為一個方法, 當一個方法被調(diào)用時, this指向該對象, 如:
var obj =
{
value: 1
,
getValue: function() {
alert(this.value);
}
};
obj.getValue(); // 輸出1, 此時的this指向obj
注意: 該模式中, this到對象的綁定發(fā)生在方法被調(diào)用的時候.2
. 函數(shù)調(diào)用模式
當一個函數(shù)并非一個對象的屬性時, 它被當作一個函數(shù)來調(diào)用, 此時的this指向全局對象(window), 如:
window.value = 1
;
function getValue() { alert(
this.value); }
getValue(); // 輸出1, 此時的this指向window.3
. 構(gòu)造器調(diào)用模式
結(jié)合new前綴調(diào)用的函數(shù)被稱為構(gòu)造器函數(shù), 此時的this指向該構(gòu)造器函數(shù)的實例對象, 如:
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
// 從上面的結(jié)果, 可以看出, 此時的this指向了func對象.4. apply/call調(diào)用模式
apply和call方法可以讓我們設(shè)定調(diào)用者中的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 ?
轉(zhuǎn)載于:https://www.cnblogs.com/mr-pz/p/5906111.html
總結(jié)
以上是生活随笔為你收集整理的第四章(变量、作用域、内存问题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。