Javascript继承.call.create和构造函数
我对Javascript比较陌生,对继承的过程感到困惑。 在我从phaser教程获得的这段代码片段中,Bullet继承自sprite。首先,它使用call方法,据我所知,该方法从一个方法中获取属性并将其插入到另一个方法中。所以在这一点上,Bullet被赋予了Sprite的所有属性。调用应该获取一个对象,然后获取被调用对象的参数,所以我理解它为什么传递游戏和关键点,但是0,0来自哪里 好的,但在完成所有这些之后,Bullet.prototype=Object.create将精灵对象创建到Bullet原型中?但它不是已经用call方法做到了吗 然后是prototype.constructor=bullet,但既然bullet已经容纳了bullet,为什么还要这样做呢 如果有人能向我解释这一点,我将非常感激。谢谢大家!Javascript继承.call.create和构造函数,javascript,inheritance,Javascript,Inheritance,我对Javascript比较陌生,对继承的过程感到困惑。 在我从phaser教程获得的这段代码片段中,Bullet继承自sprite。首先,它使用call方法,据我所知,该方法从一个方法中获取属性并将其插入到另一个方法中。所以在这一点上,Bullet被赋予了Sprite的所有属性。调用应该获取一个对象,然后获取被调用对象的参数,所以我理解它为什么传递游戏和关键点,但是0,0来自哪里 好的,但在完成所有这些之后,Bullet.prototype=Object.create将精灵对象创建到Bulle
var Bullet = function (game, key) {
Phaser.Sprite.call(this, game, 0, 0, key);
this.texture.baseTexture.scaleMode = PIXI.scaleModes.NEAREST;
this.anchor.set(0.5);
this.checkWorldBounds = true;
this.outOfBoundsKill = true;
this.exists = false;
this.tracking = false;
this.scaleSpeed = 0;
};
Bullet.prototype = Object.create(Phaser.Sprite.prototype);
Bullet.prototype.constructor = Bullet;
我希望我有一个好的链接给你。但无论如何 当函数作为对象创建时,所有构造函数都有一个初始化的原型属性,该对象具有
构造函数
属性设置构造函数本身。函数的原型
和原型的构造函数
属性都是可读写的,可以更新
使用构造函数创建的对象从创建对象时构造函数的prototype
属性中保存的对象值继承属性。这个prototype对象可以从它自己的构造函数的prototype属性继承属性,从而建立一个继承链
Object.create
是一个工厂函数,返回从作为第一个参数传递的对象继承的新对象。返回的对象将从提供给对象的对象继承其构造函数属性。如果它是本地属性,则直接创建,或者间接从对象的原型链创建
对新项目符号对象调用Phaser.Sprite
,只会添加由Phaser.Sprite
构造函数创建的本地属性
Bullet.prototype=Object.create(Phaser.Sprite.prototype)代码>创建一个对象,该对象直接继承自Phaser.Sprit.prototype
<代码>子弹
对象现在将通过子弹对象的惯性链间接继承所有精灵的原型值
Bullet.prototype.constructor=Bullet
在Bullet.prototype上创建本地构造函数
属性,该属性由Bullet对象继承。如果没有这个步骤,他们将通过继承链继承属性值Sprite