2015-04-22 69 views
1

问题防止丢失作为参数

传递如何防止环境的损失this变量作为参数传递的函数里面?

简单的例子,也JSFiddle

var a = { 
    start: function() { 
     b.start(this.process); 
    }, 

    process: function(justAParameter) { 
     justAParameter += ' of multiple contexts!' 

     this.finish(justAParameter); 
    }, 

    finish: function(finishParameter) { 
     console.log(finishParameter); 
    } 
} 

var b = { 
    start: function(justAFunction) { 
     justAFunction('Hello world') 
    } 
} 

a.start(); 

期望输出

Hello world of multiple contexts!

接收的输出

TypeError: this.finish is not a function

回答

3

可以使用bindthisprocess()方法的值绑定时,它作为一个参数

start: function() { 
    b.start(this.process.bind(this)); 
}, 

FIDDLE

引用真实