有人能解释一下这些javascript概念吗?
所以我最近一直在看,我很难理解一些事情 当使用以下代码首次声明“类”时,我理解:有人能解释一下这些javascript概念吗?,javascript,constructor,Javascript,Constructor,所以我最近一直在看,我很难理解一些事情 当使用以下代码首次声明“类”时,我理解: function GravityPoint(x, y, radius, targets) { Vector.call(this, x, y); this.radius = radius; this.currentRadius = radius * 0.5; this._targets = { particles: targets.particles || [],
function GravityPoint(x, y, radius, targets) {
Vector.call(this, x, y);
this.radius = radius;
this.currentRadius = radius * 0.5;
this._targets = {
particles: targets.particles || [],
gravities: targets.gravities || []
};
this._speed = new Vector();
}
我说的向量调用(这个,x,y)对吗使用code>以便不必声明位置向量?如果我理解正确,您可以拨打:
var a = new GravityPoint(0,0,10,[..]);
然后a.x==0
?(假设向量具有x和y属性)
我的第二个问题是关于这段代码:
GravityPoint.prototype = (function(o) {
var s = new Vector(0, 0), p;
for (p in o) s[p] = o[p];
return s;
})({
gravity: 0.05,
isMouseOver: false,
dragging: false,
destroyed: false,
_easeRadius: 0,
_dragDistance: null,
_collapsing: false,
hitTest: function(p) {
return this.distanceTo(p) < this.radius;
}
...
});
GravityPoint.prototype=(函数(o){
var s=新向量(0,0),p;
对于(p in o)s[p]=o[p];
返回s;
})({
重力:0.05,
伊斯穆塞弗:错,
拖动:false,
销毁:错误,
_半径:0,
_拖动距离:空,
_崩溃:错,
hitTest:功能(p){
将此.distance返回到(p)
我不理解这个结构:MyClass.prototype=(函数(o){})({prop1:val1})
对我来说,这就像将第二部分({prop1:val1}
)作为参数发送给函数函数(o){}
,因为该函数返回向量,所以没有意义
谢谢你的帮助很好
简单例子
(function(a, b) {
// a == 'hello'
// b == 'world'
})('hello', 'world');
在您的例子中,您正在定义这个不确定的函数
function(o) {
var s = new Vector(0, 0), p;
for (p in o) s[p] = o[p];
return s;
}
然后使用此参数调用它,并将结果存储在GravityPoint.prototype中
{
gravity: 0.05,
isMouseOver: false,
dragging: false,
destroyed: false,
_easeRadius: 0,
_dragDistance: null,
_collapsing: false,
hitTest: function(p) {
return this.distanceTo(p) < this.radius;
}
}
{
重力:0.05,
伊斯穆塞弗:错,
拖动:false,
销毁:错误,
_半径:0,
_拖动距离:空,
_崩溃:错,
hitTest:功能(p){
将此.distance返回到(p)
熟悉典型的JS,以便更好地理解此评论。基本上GravityPoint
“继承”自Vector
。这是通过将GravityPoint
的原型设置为和类型为Vector
的对象来实现的,因此,如果在前者上访问方法/字段,则如果未重新定义,则最终在后者中搜索。这就是返回s
所做的。for只是将参数的属性复制到用作原型的向量中。这将为它们提供一个默认值。感谢您的明确解释!谢谢,为什么Vector.call()用于重力点构造函数?它与原型继承有关?是的,它相当于调用super(this);感谢您的澄清!