this物件是執行時基於函式的執行環境繫結的;
在全域性函式中:
this等於window
當函式作為某個物件的方法呼叫時,this等於那個物件,不過匿名函式的執行環境具有全域性性,因此this物件通常指向window。
var name=" the window"
var object=;}};
alert(object.getnamefunc()());//"the window"
結果是「the window」的原因是每個函式在被呼叫時都會自動取得兩個特殊變數:this和argument。內部函式在搜尋這兩個變數時,只會搜尋到其活動物件為止,因此永遠不可能直接訪問外部函式的這兩個變數。
解決辦法一:把外部作用域中的this物件儲存在乙個閉包能夠訪問到的變數裡,就可以讓閉包訪問該物件
getnamefunc:function();
定義了閉包之後,閉包也可以訪問這個變數,因為它是我們在包含函式中特意宣告的乙個變數。函式返回之後,that也仍然引用著object。
解決辦法二:箭頭函式
getnamefunc:function()
箭頭函式和匿名函式有個明顯的區別:箭頭函式內部的this是詞法作用域,由上下文確定
js中的物件
1 什麼是物件 具有一組屬性和方法的乙個例項被稱為物件 1 屬性 物件具有的屬性 2 方法 物件具有的功能 2 宣告陣列的方法 方法1 通過new關鍵字來例項化 new關鍵字可以省略 例 var obj new object 或 var obj object 方法2 通過字面量來例項化 給物件新增屬...
JS中的物件
本地物件 object function array string regexp date number boolean error evalerror rangeerror referenceerror syntaxerror typeerror urierror 基礎的原始型別總是搞錯的 und...
JS中的物件
什麼事物件?物件是乙個整體,對外提供一些操作。而物件導向,就是使用物件時,只關注物件提供的功能,不關注內部的細節,物件導向是一種通用思想。物件導向程式設計的特點 抽象 抓住核心問題 封裝 不考慮內部實現,只考慮功能使用 繼承 從已有物件上,繼承出新的物件 物件的組成 方法和屬性,也就是函式與變數。工...