Javascript继承.call.create和构造函数

Javascript继承.call.create和构造函数,javascript,inheritance,Javascript,Inheritance,我对Javascript比较陌生,对继承的过程感到困惑。 在我从phaser教程获得的这段代码片段中,Bullet继承自sprite。首先,它使用call方法,据我所知,该方法从一个方法中获取属性并将其插入到另一个方法中。所以在这一点上,Bullet被赋予了Sprite的所有属性。调用应该获取一个对象,然后获取被调用对象的参数,所以我理解它为什么传递游戏和关键点,但是0,0来自哪里 好的,但在完成所有这些之后,Bullet.prototype=Object.create将精灵对象创建到Bulle

我对Javascript比较陌生,对继承的过程感到困惑。 在我从phaser教程获得的这段代码片段中,Bullet继承自sprite。首先,它使用call方法,据我所知,该方法从一个方法中获取属性并将其插入到另一个方法中。所以在这一点上,Bullet被赋予了Sprite的所有属性。调用应该获取一个对象,然后获取被调用对象的参数,所以我理解它为什么传递游戏和关键点,但是0,0来自哪里

好的,但在完成所有这些之后,Bullet.prototype=Object.create将精灵对象创建到Bullet原型中?但它不是已经用call方法做到了吗

然后是prototype.constructor=bullet,但既然bullet已经容纳了bullet,为什么还要这样做呢

如果有人能向我解释这一点,我将非常感激。谢谢大家!

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