189 8069 5689

JavaScript重名,重名怎么区分

JavaScript函数重名怎么办?

,因为脚本在页面里本身就是顺序执行下来的,包括函数的定义,但然如果只是定义 function foo(){}

绵竹ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

这种形式,我们是跟踪不到函数初始化的。可是如果是定义类的方式,我们就可以明显地跟踪到函数的初始化顺序。比如:

function foo() {}

function foo.prototype.fn1() {}

function foo.prototype.fn2() {}

我们就可以明显地看到先执行function foo.prototype.fn1(){}再执行function

foo.prototype.fn2(){}。

回到我们刚才说的JavaScript脚本函数重名问题上来,比如我们定义两个函数 funAlert():

function funAlert()

{

alert('A');

}

function funAlert()

{

alert('B');

}

调用 funAlert(),那么将显示一个MegBox,内容为'B'。

为什么初始化函数会有这样的效果?这里只用把上面两个函数的定义改一下,就会一目了然了,我们把定义改为:

var fnAlert = new Function("alert('A')");

var fnAlert = new Function("alert('B')");

window.fnAlert();

其函数也就是定义在对象上的一个函数指针,我们象这个指针赋什么函数引用,它就执行什么效果,而JavaScript中的脚本函数重名就和普通赋值语句一样,等同于:

var i = 0;

var i = 1;

// 稍微注意以下JavaScript里的var,用var定义变量和我们平时用的高级语言定义变量是不同的,它只起到一个提示的作用,提醒说我在这里定义变量了,而没有什么变量作用域的概念,只要不离开定义它的对象的域(比如页面刷新),出现过的变量会就一直存在。所以var写不写都行。举个例子:

if ( true )

{

t = 100;

}

alert(t);

将显示100,而

if ( true )

{

var t = 100;

}

alert(t);

也是显示100。

所以JavaScript的脚本函数名重不重复只是一个运算的问题,和我们高级语言里的语法约束完全不是一回事,当然也更不是overload的范畴。

脚本函数名重名有什么用呢?最直观就是可以用来实现伪重载,比如我们不少免费的主页空间常常会给你强加弹出窗口广告,我们就可以在页面第一行写上:

script language="javascript"

var _open = window.open;

window.open = function() {}

/script

这样就可以屏蔽掉不是加在页面第一行上的弹出窗口广告(加在第一行不能拦截,因为window.open还没有被'重载'open就先执行了)。

js重名了怎么解决

首先,在重名的情况下一般需要对比这两个js里面的内容是不是一样,

如果就是两个不一样的js话,那直接把一个js的名字修改一下,

然后在导入这个js的html页面把这个js的路径的名字改成你修改后的js文件名就可以了

js方法重名

一个页面如果引用多个JS,或者像ASP.NET MVC,一个视图包含多个子视图,每个子视图有自己的JS,那么变量、函数的重名冲突机会将会大增。

解决方案如下:用类来封装子页的JS代码

script type="text/javascript"

var globalName = "左直拳";

var A = function(){

var name = "leftfist";

function hi(){//私有函数,外部无法访问

alert(name + " : Hi!");//私有变量,内部可以直接访问

}

this.hiGlobal = function(){

alert(globalName + " : Hello!");//全局变量,内部可以直接访问

}

this.sayHello = function(){//public函数,外部可访问

hi();//私有函数,内部可以直接访问

this.hiGlobal();//公有函数,内部访问也要加上 this.

}

};

var fa = new A();

/script


当前标题:JavaScript重名,重名怎么区分
转载来于:http://jkwzsj.com/article/dsgscch.html

其他资讯