class bind不绑定'this'

时间:2018-01-15 19:29:12

标签: javascript closures jsx phaser-framework

我有一个在Class中创建对象的方法。 该方法应在调用时在其相同的类中使用Object(在构造函数内声明)。 在另一个类我通过调用前面提到的方法创建一个对象,但它似乎即使在我在同一个构造函数中绑定方法后它也无法识别它的构造函数对象。

代码:

//Here I call the method createSprite

import Loader from '../sprites/loader'

export default class extends Phaser.State {
  init () {
    this.SpriteLoader = new Loader()
  }
  preload () {
    this.game.add.image(0, 0, 'background')
  }
  create () {
    console.log(this.SpriteLoader.oSprites) //prints the object
    let naruto = new this.SpriteLoader.createSprite({game: this.game, x: 50, y: 50, asset: 'naruto'})
  }
}

以下是方法类:

import NarutoSprite from './naruto/naruto'

export default class extends Phaser.State {
  constructor () {
    super()
    this.oSprites = {
      oSpritesClass: {
        'naruto': NarutoSprite
      }
    }
    this.createSprite = this.createSprite.bind(this)
  }
  createSprite (prop) {
    // "this" refers to this same createSprite function when 
    //  called from another class

    return this.oSprites.oSpritesClass[prop.asset]({ game: prop.game, x: prop.x, y: prop.y, asset: prop.asset })
  }
}

0 个答案:

没有答案