所以我试图创建一个可以重用变量的函数,但我无法弄清楚如何使用.bind()函数来实现它。我想将target
替换为movie_clip_1
(或movie_clip_2
等)
这是我的Animate CC动作代码:
this.nav_core_btn.addEventListener("click", fl_playClip.bind(this, movie_clip_1));
function fl_playClip(target) {
this.target.gotoAndPlay(1);
}
错误消息说:
Uncaught ReferenceError: clip_core_inner is not defined
答案 0 :(得分:0)
确保您的函数正在调用传递给函数体的参数。看到我没有使用this
,而是使用target
,它作为函数参数传递。
我也嘲笑了这个对象,让你明白:
var btnPlay = document.querySelector('#btnPlay')
var movie_clip_1 = {
gotoAndPlay: function () {
console.log('Mock!')
}
}
btnPlay.addEventListener("click", fl_playClip.bind(this, movie_clip_1));
function fl_playClip(target) {
target.gotoAndPlay(1);
}
您可以在此处查看实时示例:http://jsbin.com/vozififoze/1/edit?html,js,console,output
如果您阅读我提供的示例,您可以开始回答您自己的问题:
如何创建我可以重用的功能? 传递一个变量,并在函数体内引用它。
如何使用bind()函数? 检查(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind)处的文档,其中说明您应该传递上下文和参数。
要看看你做错了什么,让我们看看如何正确调用函数this.target.gotoAndPlay
,你会注意到它忽略了传递给函数的参数/参数:
function fl_playClip(target) {
this.target.gotoAndPlay(1);
}
fl_playClip.prototype = {
target: {
gotoAndPlay: function () {
console.log('my gotoAndPlay output!')
}
}
}
new fl_playClip(null)
此处的输出为my gotoAndPlay output!