'Function Object' in js

Here is a paper that introduce the 'Function Object' in javascript.

http://www.permadi.com/tutorial/jsFunc/index.html

我的一点理解:函数并不会和某个实体绑定,函数可以被任何地方使用,可以看成一个数值。并不像java中的类的方法一定是和类名绑定的。(这个思维转换确实有点费劲)

以代码实例述之:

1.
Engine.prototype.start = function(){
	var eventEngine = this;
	    window.setInterval(function(){eventEngine.GetEventsInfo();},5000);
	
}



2.
Engine.prototype.start = function(){
	var eventEngine = this;
	    window.setInterval(eventEngine.GetEventsInfo,5000);	
}


差别大了,2中的window.setInterval传得第一个参数只是函数,进入GetEventsInfo()函数体后,this并不指代eventEngine,而在第一个例子中,将这样一个
引用
eventEngine.GetEventsInfo()
操作作了封装,进入GetEventsInfo()函数体内,this就是指代eventEngine了。
3.
Engine.prototype.start = function(){
	var eventEngine = this;
	    window.setInterval('eventEngine.GetEventsInfo()',5000);	
}

这是第三种可以实现的做法,因为js会去寻找这样的字符串'eventEngine.GetEventsInfo()',待找到匹配字符串的函数就会调用相应的方法,
这个特性我想不起来叫什么了(也许里面就是做了个判断
window.setInterval(fucntion , time);
if(function=='Function()'){
    //...
}else{
    //find the String in Function stack;
    var result = search('function');
    if(result){
      //...      
    }
    else{
     //error!
    }
   
}


你可能感兴趣的:(JavaScript,html,prototype)