Typescript:私有成员突然未定义

2023-12-10

所以,我有一个基本的 Typescript 应用程序,它实际上不会引起任何重大问题,但似乎这里出了问题,我不知道是什么。

我确实有这个私人会员minUpdateRate in my GameContainer类,在构造函数中初始化。这似乎进展顺利,因为当GameContainer.start()被称为,console.log()方法将打印出1.

然而,当GameContainer.render()方法被调用了,好像超出范围什么的,log方法输出undefined there.

我对 TypeScript 还很陌生,对 JavaScript 也不太了解(特别是当涉及范围时,它让我感到困惑:/)。然而我该如何解决这个问题呢?

主要类别:

class TwoDGame extends Game {
    public static main(context:CanvasRenderingContext2D) {
        var game:Game = new TwoDGame();
        var container:GameContainer = new GameContainer(context, game);

        container.start();

        return game;
    }
}

游戏容器类:

class GameContainer {
    ...
    private minUpdateRate:number;
    private game:Game;
    private time:number;
    ...

    constructor(context:CanvasRenderingContext2D, game:Game) {
        ...
        this.minUpdateRate = 1;
        this.game = game;
    }

    public start() {
        ...
        console.log(this.minUpdateRate);
    }

    public render() {
        var now:number = new Date().getMilliseconds();
        var delta:number = now - this.time;
        console.log(this.minUpdateRate);

        if (delta > this.minUpdateRate) {
            ...
        }
    }
}

Render是通过脚本区域中的setInterval调用的:

var game = TwoDGame.main(context);

setInterval(game.getGameContainer().render, 16);

当你通过时你会丢失对象上下文setInterval()这样就可以引用“render”方法。

setInterval(function() { game.getGameContainer().render(); }, 16);

函数和通过属性值引用它的对象之间没有内在关系。通过使用匿名函数,您可以确保“容器”对象的值为this在“渲染”里面。

您也可以使用.bind()函数原型的方法:

setInterval(game.getGameContainer().render.bind(game.getGameContainer()), 16);

但在这种情况下,这似乎有点难看。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript:私有成员突然未定义 的相关文章

  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • ajaxStop() 不触发

    这是不起作用的代码 document ajaxStop function this unbind ajaxStop prevent running again when other calls finish Display everythi
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 确定元素是在页面折叠上方还是下方

    我有一些页面有多个输入框 用户可以在其中输入文本 在单击 下一步 按钮之前 需要填写其中一些内容 我弹出验证错误供用户查看 但是如果问题不在页面上 我希望页面滚动到它 而不是他们必须搜索丢失 错误的字段 我有一个滚动到位 但我无法确定要滚动
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 在 jQuery 可排序中对多个选定项目进行排序?

    我试图在 jQuery 可排序集中选择多个项目 然后将选定的项目一起移动 这是我的弱点开始尝试使其发挥作用 http jsfiddle net benstenson CgD8Y 这是代码 HTML div class container d
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • console.log() 显示同一对象属性的矛盾值

    我想我可能要疯了 我使用 console log 来查看对象的状态 然后在下一行对同一对象的特定属性执行 console log 并为每个属性获取不同的值 我正在使用的代码是 console log this pictures Items
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • Knockout.js 安全绑定

    我想使用带有淘汰赛的安全绑定 为此我使用敲除安全绑定 js https github com brianmhunt knockout secure binding 谁能解释一下为什么下面的代码不起作用 它会抛出一个错误 未捕获 淘汰 安全
  • Firebase 警告:使用 Firebase Cloud Function 搜索数据时使用未指定的索引

    我构建了一个 Firebase 云函数 用于查找 IsNotificationEnabled 值等于 true 的用户 我的部分职能 export const sendPushNotification functions https onR
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • mozilla pdf.js 没有全视图

    我喜欢这个 pdf 查看器https github com mozilla pdf js https github com mozilla pdf js Demo http mozilla github com pdf js web vie
  • Node.js - 重载函数

    有没有一种方法可以重载node js中的函数 类似于 noSuchMethod https developer mozilla org en JavaScript Reference Global Objects Object noSuch
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘

随机推荐

  • 如何在列表视图中添加复选框?

    我有一个问题 被困了一段时间 我不知道如何在列表中添加复选框 例如 如果我有一个项目列表 我希望能够检查它们 我的xml代码如下
  • 如何将应用程序下载到 iOS 模拟器?

    最近的更新应用程序商店在模拟器中不可用 我想下载 twitter facebook 等应用程序来实现一些 UITests 我怎样才能做到这一点 这只能使用物理设备来实现 据我所知 App Store 从未在模拟器中可用
  • 如何在 swagger 上添加多个示例项目

    需要有关如何在 swagger 上执行此操作的帮助 SWG Property property LineItems type array SWG Items ref definitions LineItem SWG Definition d
  • 为什么 typeof(Function.prototype) 是函数

    我知道原型是对象文字这一事实 因此可以在它们上定义方法和属性 Function prototype有一些方法 如 apply call bind toString 等 所以我认为函数的原型应该是对象文字 但我运行以下代码并遇到了这个Func
  • 连续分析范围内的随机数生成器

    我可以使用以下命令从一定范围内创建随机数 Random rand new Random int num rand nextInt 10 System out println Generated Random Number between 0
  • CSS3 旋转动画

    我已经查看了相当多的演示 但不知道为什么我无法让 CSS3 spin 运行 我正在使用 Chrome 的最新稳定版本 小提琴 http jsfiddle net 9Ryvs 1 div margin 20px width 100px hei
  • JavaScript 功能和 UI 更新

    我有一个以下函数 它将相对定位的元素从现在的位置滑动 1000px for var i 0 i lt 1000 i my element css left parseInt my element css left 10 1 这不会产生滑动效
  • 使用 JavaScript Promise 实现多线程

    只是学习承诺 JavaScript 是单线程的吗 那么当它使用 fetch api 发出 http 请求时 这一切都发生在一个线程中吗 那么它如何管理 PromisePool 的并发呢 var p Promise p then stuff1
  • 应用栅格 netlogo gis 时扩展异常:1944553

    我正在尝试使用 GIS 扩展中的 apply raster 将 ascii 加载到 Netlogo 中 虽然我之前多次这样做过 尽管不是使用这个特定的 ascii 但 netlogo 现在会抛出以下错误 extension exceptio
  • 如何使用键值对列表查询数据库

    假设我有一个包含 3 列的表 ID 类别 名称 我想这样查询表 获取对应的行 Category Cat1 AND Name ABC OR Category Cat2 AND Name ABC OR Category Cat2 AND Nam
  • HTML 表单提交不适用于 Spring Boot 2.3.1

    从 Spring Boot 2 2 7 切换到 Spring Boot 2 3 1 后 针对我的具体情况提交表单时的实体转换不再起作用 类别 java Entity Getter Setter public class Category i
  • App Engine 全文搜索 API (Java)

    我一直在尝试使用 Google AppEngine 的实验性搜索 API 我使用的是 SDK 1 6 6 到目前为止 我可以将条目添加到索引并在我的开发环境中搜索它 当我部署应用程序时 我仍然可以向索引添加条目 但是当我尝试 执行搜索 我得
  • 在超过 2 个页面上使用 php 变量

    我使用了一个表单将两个变量从一个页面发送到另一个页面 然后我希望用户能够单击链接 停留在网站上 然后在第三页上仍然可以使用变量 第一页 效果很好
  • 选择后添加浏览安装目录“${PRODUCT_NAME}”后的 NSIS 目录页面

    我有一个带有目录页面的简单 NSIS 脚本 用户可以在其中选择要安装应用程序的目录 请参阅下面的示例 如果应用程序已安装 它将从注册表或 www 根目录或 program files publisher product name 中获取值
  • 防止调试器在第 3 方库中的所有异常上中断

    我维护一个开源库 该库在递归方法调用期间在内部使用异常 异常在调用堆栈上被收回并在某些情况下进行处理 而在其他情况下它将返回给调用者 我们现在遇到的问题是 一些用户运行 Visual Studio 调试器时选择了 在所有异常时停止 选项 因
  • 如何使用 AJAX 获取每个选项卡的内容? Rails 4、Bootstrap 3

    我在 事件 页面视图中有 4 个选项卡部分 我让它在请求事件页面时获取并呈现每个选项卡的所有内容 对于可扩展性来说 这似乎不是一个好的解决方案 单击选项卡时 如何使用 AJAX 获取每个选项卡的内容 第一次这样做 理论上看起来很简单 但未能
  • Java 8 List 转换为 Map>

    我有一个清单 List
  • Integer === 3 是如何工作的?

    据我了解 运算符测试 RHS 对象是否是 LHS 对象的成员 这就说得通了 但这在 Ruby 中是如何工作的呢 我正在查看 Ruby 文档 我只看到 定义于Object 我没有看到它Integer本身 只是没有记录吗 Integer是一个类
  • 如何在 Durandal 中动态显示路线选项卡?

    这是一个由两部分组成的问题 我对杜兰达尔和淘汰赛很陌生 使用 Durandal 2 0 1 的 HTML Starter Kit 示例 我使用自己的虚拟机为customers id 添加一条路由 并使用 nav false 查看 route
  • Typescript:私有成员突然未定义

    所以 我有一个基本的 Typescript 应用程序 它实际上不会引起任何重大问题 但似乎这里出了问题 我不知道是什么 我确实有这个私人会员minUpdateRate in my GameContainer类 在构造函数中初始化 这似乎进展