有人可以向我解释为什么绑定方法在这些例子中不起作用

时间:2016-08-14 23:24:56

标签: javascript

在这个例子中,当我将bind方法添加到名为deep的函数的末尾时。绑定方法不起作用。

    var body = document.body;

function Depth() {

    this.state = "I am inside here";

    this.deep = function() {

        function deeper() {

            body.innerHTML = this.state;
        }.bind(this);

        deeper();
    }

}


var obj = new Depth();

obj.deep();

在这个例子中,当我将bind方法添加到调用deep方法的新对象的末尾时。绑定方法不起作用。

    var body = document.body;

function Depth() {

    this.state = "I am inside here";

    this.deep = function() {

        function deeper() {

            body.innerHTML = this.state;
        }

        deeper();
    }

}


var obj = new Depth();

obj.deep().bind(this);

我已经知道如何使函数正常运行并打印出this.state代码。但是,我想要解释为什么前两个例子不起作用,因为这些是我编写代码的第一个想法。这是最后一个正常工作的例子

var body = document.body;

function Depth() {

    this.state = "I am inside here";

    this.deep = function() {
        var state = this.state

        function deeper() {

            body.innerHTML = state;
        }

        deeper();
    }

}


var obj = new Depth();

obj.deep();

1 个答案:

答案 0 :(得分:3)

'Function.prototype.bind()'返回一个新方法而不更改原始方法,因此您必须将新方法分配给变量,然后您可以使用它:

MAGIC-LIMIT