JavaScript: function內(nèi)部的兩個特殊對象

  • arguments
    這個對象主要用來存放函數(shù)的參數(shù),但是他還有一個特殊的屬性,callee,他是一個指針,指向擁有這個arguments屬性的函數(shù)。
    這是一個很好的,用于解耦的屬性,比如經(jīng)典階乘函數(shù):
function factorial(num){
    return num <=1 ? 1 : num * factorial(num-1); 
}
//當將這個函數(shù)指針賦值給另外的變量,清除原來的函數(shù)指針,就會表現(xiàn)出他的耦合性
var temp = factorial;factorial = null;
temp();  //出問題
//利用callee解耦
function factorial(num){
    return num <=1 ? 1 : num * arguments.callee(num-1); 
}

PS:在嚴格模式下是不能調(diào)用callee屬性(還有caller屬性,用于輸出誰調(diào)用了擁有該caller屬性的函數(shù))的:


Paste_Image.png
  • this
    this引用的是函數(shù)執(zhí)行的環(huán)境對象。換句話可以說,函數(shù)屬于哪個對象的,那么該函數(shù)this對象引用的就是這個對象(PS:在頁面的全局作用域中調(diào)用函數(shù)時,this對象引用的是window對象)。
window.color = "red";
var obj = { color: "blue" };
function sayColor(){
    console.log(this.color);
}
sayColor();    //輸出red
obj.sayColor = sayColor;
obj.sayColor();    //輸出blue
//這里說函數(shù)內(nèi)的this對象引用的是window對象,要和使用構(gòu)造函數(shù)模式常見對象的函數(shù)區(qū)別:
function Person(name, age){
  this.name - name;
  this.age = age;
  this.sayName = function(){
    console.log(this);
  }
}
var person1 = new Person('a', 18);
//如果你直接調(diào)用Person這個構(gòu)造函數(shù),this對象引用的還是window對象,但
//是用new操作符新建一個實例,就相當于構(gòu)造了一個Person對象,因此這個
//時候的this對象引用的是Person對象
person1.sayName();  //打印的是Person對象
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,950評論 0 5
  • 元素位置 一般慣例是在 元素中包含所有的 元素,但是這就意味著必須等到全部的javascript代碼都被下載、解析...
    wyude閱讀 229評論 0 0
  • 本文檔內(nèi)容參考 《JavaScript 闖關(guān)記》之函數(shù) 函數(shù)是一段代碼,它只定義一次,但可以被執(zhí)行或調(diào)用任意次。在...
    穿越人海遇見你閱讀 1,112評論 0 1
  • 函數(shù)的一些內(nèi)部屬性 1.arguments arguments保存了函數(shù)的參數(shù),是一個類數(shù)組對象。該對象有一個屬性...
    xiaoxiaokun閱讀 692評論 0 1
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,679評論 0 4

友情鏈接更多精彩內(nèi)容