'this'(内部方法)不会引用原始对象?

时间:2017-10-17 16:25:01

标签: javascript javascript-objects

我有一个对象:

let game = {
    canvas: document.getElementById('main_canvas').getContext("2d"),
    clear: function(){
        this.canvas.clearRect(0,0,400,400);
    },
    update: function(){
        this.clear();
        //more code
    },
};

在我的清晰方法中,一切都使用'this'来指代'游戏',但是当我在'update'方法中使用'this'时它并不是指“游戏”?当我使用game.clear();一切正常,但是'这个'我得到了不确定。如果有人知道原因,请发表回复。我最近了解了对象,并且知道箭头函数没有给出'this',但是认为像上面这样的匿名函数可以让我引用'parent'或owner对象。

1 个答案:

答案 0 :(得分:0)

您需要使用.bind

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind

这实质上将它绑定到创建方法的对象。

看起来应该是这样的。

library(boot)

# generate some data:
x <- rnorm(300, mean = 5, sd = 2)
y <- x^2 * rnorm(300, mean = 1.5, sd = 1) + rnorm(300, mean = 3, sd = 1)
df <- data.frame(x = x, y = y)

m1 <- nls(y ~ b1 * x^2 + b2, data = df, start = list(b1 = 1.5, b2 = 3)) 

boot.coef <- function(mod, data, indices) {
  assign(deparse(mod$data), data[indices, ])
  m <- eval(mod$call)
  return(coef(m))
}

results <- boot(data = df, statistic = boot.coef,
                R = 1000, mod = m1)