所以我有一个构造函数
var APP = function(name){
this.appName = name
}
原型功能
APP.prototype.test = function(){
console.log(this.appName)
}
然后我创建一个新的APP()并试用测试功能。
var app = new APP("ieps")
var testing = app.test
console.log(app.test()) // returns "ieps"
console.log(testing()) // returns undefined
为什么testing()返回undefined? testing()应该与app.test()做同样的事情,因为我只是引用app.test。
答案 0 :(得分:2)
您必须将对象绑定到函数
var app = new APP("ieps");
var testing = app.test.bind(app);
console.log(testing());
http://jsbin.com/kiyiyutili/2/edit
编辑:来自MDN docs for .bind
:
" bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。&#34 ;