JavaScript: function內部的兩個特殊對象

  • 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:在嚴格模式下是不能調用callee屬性(還有caller屬性,用于輸出誰調用了擁有該caller屬性的函數(shù))的:


Paste_Image.png
  • this
    this引用的是函數(shù)執(zhí)行的環(huán)境對象缠黍。換句話可以說弄兜,函數(shù)屬于哪個對象的,那么該函數(shù)this對象引用的就是這個對象(PS:在頁面的全局作用域中調用函數(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ù)內的this對象引用的是window對象语泽,要和使用構造函數(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);
//如果你直接調用Person這個構造函數(shù),this對象引用的還是window對象视卢,但
//是用new操作符新建一個實例湿弦,就相當于構造了一個Person對象,因此這個
//時候的this對象引用的是Person對象
person1.sayName();  //打印的是Person對象
Paste_Image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末腾夯,一起剝皮案震驚了整個濱河市颊埃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝶俱,老刑警劉巖班利,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榨呆,居然都是意外死亡罗标,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門积蜻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闯割,“玉大人,你說我怎么就攤上這事竿拆≈胬” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵丙笋,是天一觀的道長谢澈。 經(jīng)常有香客問我,道長御板,這世上最難降的妖魔是什么锥忿? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮怠肋,結果婚禮上敬鬓,老公的妹妹穿的比我還像新娘。我一直安慰自己笙各,他們只是感情好钉答,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酪惭,像睡著了一般希痴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上春感,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天砌创,我揣著相機與錄音虏缸,去河邊找鬼。 笑死嫩实,一個胖子當著我的面吹牛刽辙,可吹牛的內容都是我干的。 我是一名探鬼主播甲献,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼宰缤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晃洒?” 一聲冷哼從身側響起慨灭,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎球及,沒想到半個月后氧骤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吃引,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年筹陵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镊尺。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡朦佩,死狀恐怖,靈堂內的尸體忽然破棺而出庐氮,到底是詐尸還是另有隱情语稠,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布旭愧,位于F島的核電站颅筋,受9級特大地震影響,放射性物質發(fā)生泄漏输枯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一占贫、第九天 我趴在偏房一處隱蔽的房頂上張望桃熄。 院中可真熱鬧,春花似錦型奥、人聲如沸瞳收。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽螟深。三九已至,卻和暖如春烫葬,著一層夾襖步出監(jiān)牢的瞬間界弧,已是汗流浹背凡蜻。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垢箕,地道東北人划栓。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像条获,于是被迫代替她去往敵國和親忠荞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內容

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