新聞中心
JavaScript函數(shù)重名怎么辦?
,因?yàn)槟_本在頁(yè)面里本身就是順序執(zhí)行下來(lái)的,包括函數(shù)的定義,但然如果只是定義 function foo(){}

綿竹ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
這種形式,我們是跟蹤不到函數(shù)初始化的??墒侨绻嵌x類(lèi)的方式,我們就可以明顯地跟蹤到函數(shù)的初始化順序。比如:
function foo() {}
function foo.prototype.fn1() {}
function foo.prototype.fn2() {}
我們就可以明顯地看到先執(zhí)行function foo.prototype.fn1(){}再執(zhí)行function
foo.prototype.fn2(){}。
回到我們剛才說(shuō)的JavaScript腳本函數(shù)重名問(wèn)題上來(lái),比如我們定義兩個(gè)函數(shù) funAlert():
function funAlert()
{
alert('A');
}
function funAlert()
{
alert('B');
}
調(diào)用 funAlert(),那么將顯示一個(gè)MegBox,內(nèi)容為'B'。
為什么初始化函數(shù)會(huì)有這樣的效果?這里只用把上面兩個(gè)函數(shù)的定義改一下,就會(huì)一目了然了,我們把定義改為:
var fnAlert = new Function("alert('A')");
var fnAlert = new Function("alert('B')");
window.fnAlert();
其函數(shù)也就是定義在對(duì)象上的一個(gè)函數(shù)指針,我們象這個(gè)指針賦什么函數(shù)引用,它就執(zhí)行什么效果,而JavaScript中的腳本函數(shù)重名就和普通賦值語(yǔ)句一樣,等同于:
var i = 0;
var i = 1;
// 稍微注意以下JavaScript里的var,用var定義變量和我們平時(shí)用的高級(jí)語(yǔ)言定義變量是不同的,它只起到一個(gè)提示的作用,提醒說(shuō)我在這里定義變量了,而沒(méi)有什么變量作用域的概念,只要不離開(kāi)定義它的對(duì)象的域(比如頁(yè)面刷新),出現(xiàn)過(guò)的變量會(huì)就一直存在。所以var寫(xiě)不寫(xiě)都行。舉個(gè)例子:
if ( true )
{
t = 100;
}
alert(t);
將顯示100,而
if ( true )
{
var t = 100;
}
alert(t);
也是顯示100。
所以JavaScript的腳本函數(shù)名重不重復(fù)只是一個(gè)運(yùn)算的問(wèn)題,和我們高級(jí)語(yǔ)言里的語(yǔ)法約束完全不是一回事,當(dāng)然也更不是overload的范疇。
腳本函數(shù)名重名有什么用呢?最直觀就是可以用來(lái)實(shí)現(xiàn)偽重載,比如我們不少免費(fèi)的主頁(yè)空間常常會(huì)給你強(qiáng)加彈出窗口廣告,我們就可以在頁(yè)面第一行寫(xiě)上:
script language="javascript"
var _open = window.open;
window.open = function() {}
/script
這樣就可以屏蔽掉不是加在頁(yè)面第一行上的彈出窗口廣告(加在第一行不能攔截,因?yàn)閣indow.open還沒(méi)有被'重載'open就先執(zhí)行了)。
js重名了怎么解決
首先,在重名的情況下一般需要對(duì)比這兩個(gè)js里面的內(nèi)容是不是一樣,
如果就是兩個(gè)不一樣的js話,那直接把一個(gè)js的名字修改一下,
然后在導(dǎo)入這個(gè)js的html頁(yè)面把這個(gè)js的路徑的名字改成你修改后的js文件名就可以了
js方法重名
一個(gè)頁(yè)面如果引用多個(gè)JS,或者像ASP.NET MVC,一個(gè)視圖包含多個(gè)子視圖,每個(gè)子視圖有自己的JS,那么變量、函數(shù)的重名沖突機(jī)會(huì)將會(huì)大增。
解決方案如下:用類(lèi)來(lái)封裝子頁(yè)的JS代碼
script type="text/javascript"
var globalName = "左直拳";
var A = function(){
var name = "leftfist";
function hi(){//私有函數(shù),外部無(wú)法訪問(wèn)
alert(name + " : Hi!");//私有變量,內(nèi)部可以直接訪問(wèn)
}
this.hiGlobal = function(){
alert(globalName + " : Hello!");//全局變量,內(nèi)部可以直接訪問(wèn)
}
this.sayHello = function(){//public函數(shù),外部可訪問(wèn)
hi();//私有函數(shù),內(nèi)部可以直接訪問(wèn)
this.hiGlobal();//公有函數(shù),內(nèi)部訪問(wèn)也要加上 this.
}
};
var fa = new A();
/script
本文題目:JavaScript重名,重名怎么區(qū)分
網(wǎng)頁(yè)URL:http://www.dlmjj.cn/article/dsgscch.html


咨詢
建站咨詢
