在adobe animate timeline(actions)中创建函数

时间:2017-08-15 23:40:36

标签: javascript adobe createjs

我试图让功能在adobe animate canvas的主时间轴内工作。我有那个代码:

function player(){
var power = 19;
}
console.log(this.power);

当我执行它时,它表示未定义。任何人都可以解释为什么?

2 个答案:

答案 0 :(得分:3)

在方法player()中定义一个本地变量power,它只存在于该函数的范围内,其他地方没有这样的变量。所以当你写的时候你实际上指的是全局变量window.power thiswindow在这种情况下)不是定义

最后一点,当你纠正这个时,你仍然需要执行这个功能。

您可以全局定义power或在函数内运行console.log定义该变量:

第一种情况:

var power;
function player() {
    power = 19;
}
player();
console.log(power);

第二种情况:

function player(){
    var power = 19;
    console.log(power);
}
player();

注意:每当您尝试访问任何函数范围之外的变量时,它都将window对象作为window.someVariable访问,因此在这种情况下您可以{ {1}}与上面的两个例子一样。

答案 1 :(得分:1)

' this' keyword指的是哪个对象正在调用一个函数,不是实际的函数本身。

例如:

  

让玩家= {       func:function(){         的console.log(this.power);       },       权力:10}

     

player.func();

//将记录10因为您从玩家对象调用了该函数,并且有一个属性player.power并且它等于10.

//对比:现在在全局范围内创建一个变量,并将相同的函数存储到新变量中:

  

让sameFunction = player.func;

//引擎盖下,上面的代码将是:

  

window.sameFunction = player.function或window.sameFunction = func:   function(){console.log(this.power);}

     

sameFunction();

将记录undefined,因为sameFunction指向存储在player.func BUT 中的函数,您正在从全局对象调用它,并且该对象没有名为power的属性。

调用sameFunction()与window是全局对象时调用window.sameFunction()相同。您的窗口对象没有名为power的属性;所以这个力量是未定义的。

(当你看到函数声明中使用的'这个词时,它可能是一个构造函数。这些函数的结构是为了创建对象。要使用它们,你必须理解新的关键字及其作用)。