多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

javascript教程

JavaScript 教程

JS 函數

JS HTML DOM

JS 高級教程

JS 瀏覽器BOM

JS 庫

JS 實例

拓展閱讀

JavaScript 函數調用

閱讀 (2269)

JavaScript 函數調用


JavaScript 函數有 4 種調用方式。

每種方式的不同方式在于 this 的初始化。


this 關鍵字

一般而言,在Javascript中,this指向函數執行時的當前對象。

Note 注意 this 是保留關鍵字,你不能修改 this 的值。

調用 JavaScript 函數

在之前的章節中我們已經學會了如何創建函數。

函數中的代碼在函數被調用后執行。


作為一個函數調用

實例

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // myFunction(10, 2) 返回 20

嘗試一下 ?

以上函數不屬于任何對象。但是在 JavaScript 中它始終是默認的全局對象。

在 HTML 中默認的全局對象是 HTML 頁面本身,所以函數是屬于 HTML 頁面。

在瀏覽器中的頁面對象是瀏覽器窗口(window 對象)。以上函數會自動變為 window 對象的函數。

myFunction() 和 window.myFunction() 是一樣的:

實例

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) 返回 20

嘗試一下 ?

Note 這是調用 JavaScript 函數常用的方法, 但不是良好的編程習慣
全局變量,方法或函數容易造成命名沖突的bug。

全局對象

當函數沒有被自身的對象調用時, this 的值就會變成全局對象。

在 web 瀏覽器中全局對象是瀏覽器窗口(window 對象)。

該實例返回 this 的值是 window 對象:

實例

function myFunction() {
    return this;
}
myFunction();                // 返回 window 對象

嘗試一下 ?

Note 函數作為全局對象調用,會使 this 的值成為全局對象。
使用 window 對象作為一個變量容易造成程序崩潰。

函數作為方法調用

在 JavaScript 中你可以將函數定義為對象的方法。

以下實例創建了一個對象 (myObject), 對象有兩個屬性 (firstNamelastName), 及一個方法 (fullName):

實例

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // 返回 "John Doe"

嘗試一下 ?

fullName 方法是一個函數。函數屬于對象。 myObject 是函數的所有者。

this對象,擁有 JavaScript 代碼。實例中 this 的值為 myObject 對象。

測試以下!修改 fullName 方法并返回 this 值:

實例

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // 返回 [object Object] (所有者對象)

嘗試一下 ?

Note 函數作為對象方法調用,會使得 this 的值成為對象本身。

使用構造函數調用函數

如果函數調用前使用了 new 關鍵字, 則是調用了構造函數。

這看起來就像創建了新的函數,但實際上 JavaScript 函數是重新創建的對象:

實例

// 構造函數:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}

// This creates a new object
var x = new myFunction("John","Doe");
x.firstName;                             // 返回 "John"

嘗試一下 ?

構造函數的調用會創建一個新的對象。新對象會繼承構造函數的屬性和方法。

Note 構造函數中 this 關鍵字沒有任何的值。
this 的值在函數調用時實例化對象(new object)時創建。

作為函數方法調用函數

在 JavaScript 中, 函數是對象。JavaScript 函數有它的屬性和方法。

call()apply() 是預定義的函數方法。 兩個方法可用于調用函數,兩個方法的第一個參數必須是對象本身。

實例

function myFunction(a, b) {
    return a * b;
}
myFunction.call(myObject, 10, 2);      // 返回 20

實例

function myFunction(a, b) {
    return a * b;
}
myArray = [10,2];
myFunction.apply(myObject, myArray);   // 返回 20

兩個方法都使用了對象本身作為第一個參數。 兩者的區別在于第二個參數: apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。

在 JavaScript 嚴格模式(strict mode)下, 在調用函數時第一個參數會成為 this 的值, 即使該參數不是一個對象。

在 JavaScript 非嚴格模式(non-strict mode)下, 如果第一個參數的值是 null 或 undefined, 它將使用全局對象替代。

Note 通過 call() 或 apply() 方法你可以設置 this 的值, 且作為已存在對象的新方法調用。
關閉
程序員人生
主站蜘蛛池模板: 日韩中文字幕久久精品 | 欧美第一色 | 黄色的网站免费观看 | 午夜精品久久久久 | 国产精品视频视频久久 | 国产一区二区色淫影院 | jizz毛片| 亚洲色图吧 | 欧美日韩亚洲综合另类ac | 亚洲123区| 欧美成人性色xxxx视频 | 国产啪精品视频网免费 | 亚洲欧美精品一区 | 精品精品国产高清a毛片 | 久久爱18| tube44欧美| 亚洲国产情侣一区二区三区 | 国产免费一区不卡在线 | 亚洲精品在线观看视频 | 在线观看视频在线观看 | 国产成人精品本亚洲 | xxxxx日本护士xxxhd | 欧美精品影院 | 手机看片日韩 | 五月婷婷激情四射 | 波多野结衣日韩 | 最近免费中文字幕大全高清mv | 亚洲 自拍 另类 欧美 综合 | 天天做天天爱天天大综合 | 91亚洲精品一区二区自 | h视频无遮挡免费网站 | 久久99国产精一区二区三区! | 久久人人澡人人爽人人爱 | 最新中文字幕免费视频 | 在线精品国产第一页 | 羞羞的影院 | 国产高清国内精品福利99久久 | 亚洲春色小说 | 亚洲第一影视 | 成人无遮挡毛片免费看 | 精品a级片 |