溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript怎么調(diào)用函數(shù)

發(fā)布時(shí)間:2021-04-15 14:24:11 來源:億速云 閱讀:171 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)javascript怎么調(diào)用函數(shù)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

javascript的調(diào)用函數(shù)方法有:1、使用makeArray函數(shù)作為它的一個(gè)方法,使用json的方式來聲明一個(gè)對(duì)象;2、使用【obj.myFunction()】方法調(diào)用語法。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版,DELL G3電腦。

javascript的調(diào)用函數(shù)方法有:

JavaScript函數(shù)調(diào)用規(guī)則1

在沒有通過明確所有者對(duì)象而直接調(diào)用的函數(shù)中,如myFunction(),將導(dǎo)致this的值成為默認(rèn)對(duì)象(瀏覽器中的窗口)。

函數(shù)調(diào)用

讓我們現(xiàn)在創(chuàng)建一個(gè)簡單的對(duì)象,使用 makeArray函數(shù)作為它的一個(gè)方法,我們將使用json的方式來聲明一個(gè)對(duì)象,我們也來調(diào)用這個(gè)方法

//creating the object
var arrayMaker = {
    someProperty: 'some value here',
    make: makeArray
};
 
//invoke the make() method
arrayMaker.make('one', 'two');
// => [ arrayMaker, 'one', 'two' ]
// alternative syntax, using square brackets
arrayMaker['make']('one', 'two');
// => [ arrayMaker, 'one', 'two' ]

看到這里的不同了吧,this的值變成了對(duì)象本身.你可能會(huì)疑問原始的函數(shù)定義并沒有改變,為何它不是window了呢.好吧,這就是函數(shù)在JSavacript中傳遞的方式,函數(shù)在JavaScript里是一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型,確切的說是一個(gè)對(duì)象.你可以傳遞它們或者復(fù)制他們.就好像整個(gè)函數(shù)連帶參數(shù)列表和函數(shù)體都被復(fù)制,且被分配給了 arrayMaker里的屬性make,那就好像這樣定義一個(gè) arrayMaker:

var arrayMaker = {
    someProperty: 'some value here',
    make: function (arg1, arg2) {
        return [ this, arg1, arg2 ];
    }
};

JavaScript函數(shù)調(diào)用規(guī)則2

在一個(gè)使用方法調(diào)用語法,像 obj.myFunction()或者 obj['myFunction'](),這時(shí)this的值為obj

這是事件處理代碼中bug的主要源頭,看看這些例子

<input type="button" value="Button 1" id="btn1"  />
<input type="button" value="Button 2" id="btn2"  />
<input type="button" value="Button 3" id="btn3"  onclick="buttonClicked();"/>
 
<script type="text/javascript">
function buttonClicked(){
    var text = (this === window) ? 'window' : this.id;
    alert( text );
}
var button1 = document.getElementById('btn1');
var button2 = document.getElementById('btn2');
 
button1.onclick = buttonClicked;
button2.onclick = function(){   buttonClicked();   };
</script>

點(diǎn)擊第一個(gè)按鈕將會(huì)顯示”btn”因?yàn)樗且粋€(gè)方法調(diào)用,this為所屬的對(duì)象(按鈕元素) 點(diǎn)擊第二個(gè)按鈕將顯示”window”因?yàn)?buttonClicked是被直接調(diào)用的(不像 obj.buttonClicked().) 這和我們第三個(gè)按鈕,將事件處理函數(shù)直接放在標(biāo)簽里是一樣的.所以點(diǎn)擊第三個(gè)按鈕的結(jié)果是和第二個(gè)一樣的.

使用像jQuery的JS庫有這樣的優(yōu)點(diǎn),當(dāng)在jQuery里定義了一個(gè)事件處理函數(shù),JS庫會(huì)幫助重寫this的值以保證它包含了當(dāng)前事件源元素的引用,

//使用jQuery
$('#btn1').click( function() {
    alert( this.id ); // jQuery ensures 'this' will be the button
});

感謝各位的閱讀!關(guān)于“javascript怎么調(diào)用函數(shù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI