淺談javascript 函數(shù)內(nèi)部屬性
在函數(shù)內(nèi)部有兩個特殊的屬性:arguments 和 this。arguments是一個類數(shù)組對象,包含傳入的所有參數(shù),
但是這個對象還有一個名叫callee的屬性,該屬性是一個指針,指向擁有這個arguments對象的函數(shù)。
請看經(jīng)典的階乘函數(shù)例子:
function Factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * Factorial(num - 1);
}
}
function Factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
使用第一種方式是沒有錯的,但是耦合性太高,不太好,函數(shù)名改變之后,內(nèi)部的函數(shù)名也要改變
第二種方式就是低耦合的做法,無論函數(shù)名怎么改變都不會影響函數(shù)執(zhí)行。
this引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對象,或者也可以說是this值
window.color = "red";
var o = {color: "blue"};
function sayColor() {
alert(this.color);
}
sayColor();//red
o.sayColor = sayColor;
o.sayColor();//blue
caller屬性,保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用,如果是在全局作用域中調(diào)用當(dāng)前函數(shù),它的值為Null
function outer() {
innter();
}
function innter(){
//alert(innter.caller);//耦合性太高
alert(arguments.callee.caller);
}
outer();
以上就是javascript函數(shù)內(nèi)部屬性的全部內(nèi)容了,希望小伙伴們能夠喜歡
相關(guān)文章
JavaScript基礎(chǔ)學(xué)習(xí)之splice()函數(shù)詳解
在前端JavaScript編程過程中,為了開發(fā)出更具交互性的web應(yīng)用,需要對一些數(shù)組進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于JavaScript基礎(chǔ)學(xué)習(xí)之splice()函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-04-04實(shí)例講解JavaScript中的this指向錯誤解決方法
JavaScript中this指向的處理是令大家普遍頭疼的問題,這里我們舉一個實(shí)例講解JavaScript中的this指向錯誤解決方法,需要的朋友可以參考下2016-06-06