日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数②

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数② 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JavaScript 有一套完全不同于其它語言的對?this?的處理機制。 在種不同的情況下 ,this?指向的各不相同。

全局范圍內

this;

當在全部范圍內使用?this,它將會指向全局對象。

譯者注:瀏覽器中運行的 JavaScript 腳本,這個全局對象是?window。

函數調用

foo();

這里?this?也會指向全局對象。

ES5 注意:?在嚴格模式下(strict mode),不存在全局變量。 這種情況下?this?將會是?undefined。

方法調用

test.foo();

這個例子中,this?指向?test?對象。

調用構造函數

new foo();

如果函數傾向于和?new?關鍵詞一塊使用,則我們稱這個函數是?構造函數。 在函數內部,this?指向新創建的對象。

顯式的設置?this

function foo(a, b, c) {}var bar = {}; foo.apply(bar, [1, 2, 3]); // 數組將會被擴展,如下所示 foo.call(bar, 1, 2, 3); // 傳遞到foo的參數是:a = 1, b = 2, c = 3

當使用?Function.prototype?上的?call?或者?apply?方法時,函數內的?this將會被?顯式設置為函數調用的第一個參數。

因此函數調用的規則在上例中已經不適用了,在foo?函數內?this?被設置成了bar。

注意:?在對象的字面聲明語法中,this?不能用來指向對象本身。 因此?var obj = {me: this}?中的?me?不會指向obj,因為?this?只可能出現在上述的五種情況中。?譯者注:這個例子中,如果是在瀏覽器中運行,obj.me?等于window?對象。

常見誤解

盡管大部分的情況都說的過去,不過第一個規則(譯者注:這里指的應該是第二個規則,也就是直接調用函數時,this?指向全局對象) 被認為是JavaScript語言另一個錯誤設計的地方,因為它從來就沒有實際的用途。

Foo.method = function() {function test() {// this 將會被設置為全局對象(譯者注:瀏覽器環境中也就是 window 對象)}test(); }

一個常見的誤解是?test?中的?this?將會指向?Foo?對象,實際上不是這樣子的。

為了在?test?中獲取對?Foo?對象的引用,我們需要在?method?函數內部創建一個局部變量指向?Foo?對象。

Foo.method = function() {var that = this;function test() {// 使用 that 來指向 Foo 對象}test(); }

that?只是我們隨意起的名字,不過這個名字被廣泛的用來指向外部的?this對象。 在?閉包?一節,我們可以看到?that?可以作為參數傳遞。

方法的賦值表達式

另一個看起來奇怪的地方是函數別名,也就是將一個方法賦值給一個變量。

var test = someObject.methodTest; test();

上例中,test?就像一個普通的函數被調用;因此,函數內的?this?將不再被指向到?someObject?對象。

雖然?this?的晚綁定特性似乎并不友好,但這確實是基于原型繼承賴以生存的土壤。

function Foo() {} Foo.prototype.method = function() {};function Bar() {} Bar.prototype = Foo.prototype;new Bar().method();

當?method?被調用時,this?將會指向?Bar?的實例對象。

轉載于:https://www.cnblogs.com/luckyxb/p/6398512.html

總結

以上是生活随笔為你收集整理的函数②的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。