绑定函数和打字稿中的这个

塞布·比泽尔(Seb Bizeul)

我想实现一个简单的上下文绑定,但是在TypeScript中不起作用。这是我的代码:

class Engine {
    // some code...

    spriteController(sprite: Sprite, callbackfn: (ctx: CanvasRenderingContext2D) => void) {
        callbackfn.bind(new SpriteController(sprite), [this._ctx]);
    }

    // code again ...
}

如果我想在另一个文件中使用spriteController方法,例如:

engine.spriteController(sprite, function(ctx) {
    this.moveRight() // access to the spriteController class
})

我希望能够在回调中使用SpriteController类。
在JS中,第一个参数(在bind()调用内)将'this'绑定到给定的对象。但是在TypeScript中,从function.bind创建的函数始终保留“ this”。
如何在TypeScript中实现呢?

编码器Pi

绑定时,它返回绑定函数,您必须更新变量width callbackfn = callbackfn.bind(...)

文档链接

class Engine {
    spriteController(sprite: Sprite, callbackfn: (ctx: CanvasRenderingContext2D) => void) {
        let callbackfnBinded = callbackfn.bind(new SpriteController(sprite), [this._ctx])
        callbackfnBinded()
    }
}

JavaScript在这里:

var Sprite = (function () {
    function Sprite(name) {
        this.name = name;
    }
    return Sprite;
})();
var SpriteController = (function () {
    function SpriteController(sprite) {
        this.sprite = sprite;
    }
    return SpriteController;
})();
var Engine = (function () {
    function Engine() {
    }
    Engine.prototype.spriteController = function (sprite, callbackfn) {
        callbackfn = callbackfn.bind(new SpriteController(sprite), [this._ctx])
        callbackfn()
    };
    return Engine;
})();
var e = new Engine();
var s = new Sprite("test");
var cb = function (ctx) {
    alert(this.sprite.name);
};
e.spriteController(s, cb);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打字稿中的绑定方法

来自分类Dev

打字稿中的函数重载和类型推断

来自分类Dev

“ Duck”打字与打字稿中的函数参数

来自分类Dev

在打字稿中是否有用于绑定接口构造函数的简写?

来自分类Dev

返回对象和函数打字稿的数组

来自分类Dev

打字稿绑定问题

来自分类Dev

Lodash中zip函数的打字稿错误

来自分类Dev

在打字稿函数中声明“ this”的类型?

来自分类Dev

从HTML调用打字稿文件中的函数。

来自分类Dev

。打字稿中的每个函数+角2

来自分类Dev

在打字稿中重构长函数

来自分类Dev

重用打字稿中的函数重载

来自分类Dev

打字稿:类中的命名函数

来自分类Dev

。打字稿中的每个函数+角2

来自分类Dev

Lodash中zip函数的打字稿错误

来自分类Dev

打字稿 - 从我的函数中删除样板

来自分类Dev

打字稿类型描述在函数中的位置

来自分类Dev

如何将参数传递给打字稿中的内部函数和外部函数?

来自分类Dev

打字稿中的这个关键字与课程无关

来自分类Dev

如何在打字稿中获得“这个”类型

来自分类Dev

打字稿:和!类中的属性

来自分类Dev

打字稿:和!类中的属性

来自分类Dev

angular 2打字稿中的成员属性和构造函数的语法

来自分类Dev

打字稿:函数重载

来自分类Dev

打字稿函数参数

来自分类Dev

打字稿并绑定层次结构

来自分类Dev

使用打字稿访问构造函数中的函数

来自分类常见问题

如何阅读打字稿构造函数和Record <>句子

来自分类Dev

如何阅读打字稿构造函数和Record <>句子