首先把这两个函数都定义数来。
定义被调用函数(这类函数一般都是一个公用函数,如果不是公用可以和调用函数写在一起)。
// 被调用的公共函数 act为需要的参数,自己定义就可function publicMethod(act1,atc2){
// 实现逻辑
}
3.定义调用函数
// 调用的函数 act为需要的参数,自己定义就可function callMethod(act1,atc2){
// 如果有返回值,可以定义一个变量进行赋值
var ret = publicMethod(act1,atc2)
// 下面逻辑处理
}
JS函数调用的四种方法
1:方法调用模式
/*方法调用模式*/var myobject={
value:0,
inc:function(){
alert(this.value)
}
}
myobject.inc()
请注意this此时指向myobject
2:函数调用模式
/*函数调用模式*/
var add=function(a,b){
alert(this)//this被绑顶到window
return a+b
}
var sum=add(3,4)
alert(sum)
请注意this此时指向window
3:构造器调用模式
/*构造器调用模式 摒弃*/
var quo=function(string){
this.status=string
}
quo.prototype.get_status=function(){
return this.status
}
var qq=new quo("aaa")
alert(qq.get_status())
javascript语言精粹一书建议摒弃这种方式
4:apply调用模式
/*apply*///注意使用了上面的sum函数
//与myobject
//这中调用方式的优点在于可以指向this指向的对象。
//apply的第一个参数就是this指针要指向的对象
var arr=[10,20]
var sum=add.apply(myobject,arr)
alert(sum)
看这个apply真正应用。bind这是一个绑定时间的函数
var bind=function(object,type,fn){if(object.attachEvent){//IE浏览器
object.attachEvent("on"+type,(function(){
return function(event){
window.event.cancelBubble=true//停止时间冒泡
object.attachEvent=[fn.apply(object)]
//在IE里用attachEvent添加一个时间绑定以后。
//this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。
//但是如果我们用fn.apply(object)
//这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了
//object.id 可以正常工作了。
}
})(object),false)
}else if(object.addEventListener){//其他浏览器
object.addEventListener(type,function(event){
event.stopPropagation()//停止时间冒泡
fn.apply(this)
})
}
}
bind(document.getElementById("aaa"),"click",function(){alert(this.id)})