调用对象内部函数

时间:2017-10-19 11:02:00

标签: javascript function object

希望这是一个简单的答案。我试图从我的对象内部调用一个方法,但是,控制台抛出的错误是该函数不是函数。

function tabs(el, data){
    this.el = el;

    this.addTab = function(data){
        console.log("addTab", this.el, data);
    };

    data.forEach(function(data){
        this.addTab(data);
    });
}

我最初是这样打电话给我的对象:

var t = new tabs("tabs", []);

我的错误是addTab不是函数。

1 个答案:

答案 0 :(得分:1)

每个函数都有自己的上下文,其中this引用它。您传递给forEach的函数的上下文不是指对象本身。因此,您需要保持函数的上下文以引用当前对象。使用 enter image description here 更改函数声明以保留外部上下文。

function tabs(el, data){
    this.el = el;

    this.addTab = function(data){
        console.log("addTab", this.el, data);
    };

    data.forEach((data) => {
        this.addTab(data);
    });
}