【发布时间】:2015-01-19 02:02:08
【问题描述】:
我还在纠结于闭包。
我正在使用Paper.js 和paperscript 开展一个项目。我正在尝试创建具有距离度量的线段,该距离度量在移动时保持在线段的中心。
不是简单地编写代码来分别移动中心和线(这将非常简单),我一直在研究是否可以移动线并让中心跟随。
事实证明这很困难。它可能有几个问题,但现在this 是我目前的bugaboo。我现在设置它们的方式,this 指的是调用函数时的全局对象,这当然不是我想要的。但我不知道如何创建我想要的,这当然是从“重量”元素到“线”元素的烘焙参考。
我该如何正确地做到这一点?
edge = new Group({
children: [
new Path.Line({
from: gn.position,
to: event.point,
strokeColor: 'maroon',
name: 'line'
}),
new PointText(function (){
return {
position: function () {
return this.previousSibling.position;
}(),
content: function () {
return this.previousSibling.length.toString();
}(),
name: 'weight'
}
}())
]
});
【问题讨论】:
-
this 的值与闭包无关,它总是在当前执行上下文中解析,由你调用函数的方式设置,或者 bind.
-
你能解释更多吗?我正在尝试创建一个
this以某种方式永久编码到对象中的函数的情况,我认为闭包可能有助于做到这一点。我最好的策略是什么? -
"this指的是函数调用时的全局作用域" 哪个函数?而且我认为你的意思是全局对象,你不能以任何方式引用范围。
-
您可以在要在该函数和
this上下文之间创建确定关系的每个函数中调用bind(),但我想您最好更改编写代码的方式。 -
@RobG - 函数应该返回 PointText 对象的新位置和内容。
this并不意味着 PointText 对象...我希望它引用它自己的前一个兄弟。
标签: javascript closures this paperjs