"这个"的价值在JS构造函数中,返回" undefined"

时间:2014-11-27 19:14:30

标签: javascript constructor prototype

所以我有一个构造函数

    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。

1 个答案:

答案 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 ;