Javascript 使用方法的JS对象文字缺少什么?

Javascript 使用方法的JS对象文字缺少什么?,javascript,object,object-literal,Javascript,Object,Object Literal,我试图创建一个简单的对象文字,其中包含一个方法,在本例中,它是画布上的一个移动块。我在上使用教程编写了以下代码 由于某些原因,它不会像这样工作,而如果我现在在draw()函数中的draw方法中编写代码,它就会这样工作。我可能遗漏了一些东西,但是什么呢?block及其成员从未听说过ctx,它是您的draw()函数的本地函数 要么将其设置为全局,要么将其传递到块中。绘制: var block = { // ... draw: function(ctx) { // ... }

我试图创建一个简单的对象文字,其中包含一个方法,在本例中,它是画布上的一个移动块。我在上使用教程编写了以下代码


由于某些原因,它不会像这样工作,而如果我现在在draw()函数中的draw方法中编写代码,它就会这样工作。我可能遗漏了一些东西,但是什么呢?

block
及其成员从未听说过
ctx
,它是您的
draw()
函数的本地函数

要么将其设置为全局,要么将其传递到
块中。绘制

var block = {
  // ...

  draw: function(ctx) { 
    // ...
  }
};

// ...

block.draw(ctx);

block
及其成员从未听说过
ctx
,它是
draw()函数的本地函数

要么将其设置为全局,要么将其传递到
块中。绘制

var block = {
  // ...

  draw: function(ctx) { 
    // ...
  }
};

// ...

block.draw(ctx);

声明方法时,
ctx
未知。该方法创建一个闭包,对
ctx
没有任何值。请记住,作用域并不完全是动态的(关于引用),因为作用域是根据函数定义定义的,而不是函数用法定义的


如何修复:将
ctx
作为参数传递给方法,或作为可赋值属性传递(并修改方法以引用
this.ctx

ctx
在声明方法时是未知的。该方法创建一个闭包,对
ctx
没有任何值。请记住,作用域并不完全是动态的(关于引用),因为作用域是根据函数定义定义的,而不是函数用法定义的


如何修复:将
ctx
作为参数传递给方法,或作为可赋值属性传递(并修改方法以引用
this.ctx

如果不将其作为参数传递,代码应该如何到达“ctx”变量?当JavaScript不工作时,请始终查看控制台,它可能包含有用的错误@Pointy并不总是在附近告诉您出了什么问题。如果不将“ctx”变量作为参数传递,代码应该如何到达该变量?当JavaScript不工作时,请始终查看控制台,它可能包含有用的错误@Pointy并不总是在附近告诉你出了什么问题。
block
是一个对象,甚至不知道“范围”的概念。正如你所说,只有函数才能“听说过变量”。我最谦虚的歉意是用口语解释了一些事情。我显然是历史上最可怕的怪物。
block
是一个对象,甚至不知道“范围”的概念。正如你所说,只有函数才能“听说过变量”。我最谦虚的歉意是用口语解释了一些事情。我显然是历史上最可怕的怪物。