JS函数调用的四种方法:方法调用模式,函数调用模式,构造器调用模式,apply,call调用模式
1.方法调用模式:
先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject
对象。
var blogInfo={
blogId:123,
blogName:"werwr",
showBlog:function(){alert(this.blogId)}
}
blogInfo.showBlog()
2.函数调用模式
定义一个函数,设置一个变量名保存函数,这时this指向到window对象。
var myfunc = function(a,b){
return a+b
}
alert(myfunc(3,4))
3.构造器调用模式
定义一个函数对象,在对象中定义属性,在其原型对象中定义方法。在使用prototype的方法时,必须实例化该对象才能调用其方法。
var myfunc = function(a){
this.a = a
}
myfunc.prototype = {
show:function(){alert(this.a)}
}
var newfunc = new myfunc("123123123")
newfunc.show()
4.apply,call调用模式
var myobject={}
var sum = function(a,b){
return a+b
}
var sum2 = sum.call(myobject,10,30)//var sum2 = sum.apply(myobject,[10,30])
alert(sum2)
js是事件驱动的,一个节点可以发生很多种事件,包括click事件。在js中,当节点发生某一个事件时,可以为该事件绑定一个处理函数。也就是类似的 document.getElementById("myBtn").onclick = function(){} 所要注意的是,这个节点的onclick属性,需要赋给一个函数类型的值,才可以处理事件。 但是displayDate()并不是一个函数,你可以说你定义了displayDate函数,但displayDate()也就是加了一对括号的displayDate,是函数执行了,displayDate()是等价于displayDate的返回值的。在displayDate函数里,只是给id为demo的节点重新设置了内容,没有返回值,所以默认的就是undefined。 那么如果写成 document.getElementById("myBtn").onclick = displayDate()实际上是等价于 document.getElementById("myBtn").onclick = undefined显然undefined是不能作为节点事件的处理函数的。 但是,也不是一定要加上function(){},你可以写成这样: document.getElementById("myBtn").onclick = displayDate虽然displayDate()不是函数,但displayDate却是函数,是可以作为节点事件的处理函数的。两种方式:
第一种:直接在函数内容使用就可以了。
第二种:通过函数的参数方式传入函数内部使用。
示例:
第一种:<script>
var a='1'
function k(){
alert(a)//这里直接使用变量a
}
</script>
第二种:
<script>
var a='1'
function k(v){
alert(v)
}
k(a)//通过参数的方式传入函数内部
</script>