【发布时间】:2015-05-29 08:05:20
【问题描述】:
我有这种奇怪的行为,希望你能帮助我。 =)
我有一个设置,我需要使用Mocha 运行JavaScript 测试。代码从TypeScript 生成,测试通过browserify 和commonjs 模块在浏览器和nodejs 中运行。问题是我想使用instanceof,但显然行为会有所不同,具体取决于代码是在Node 还是Chrome 中运行。示例如下。
// file Actions.ts
Class Action {..}
Class ViewAction extends Action {..}
Class MyViewAction extends ViewAction {..}
// file App.ts
var action = new MyViewAction();
// file App.ts or Elsewhere.ts
foo(action) {
var testA = action instanceof MyViewAction;
var testB = (<any>action.constructor).name === "MyViewAction";
}
问题是,如果 foo 在不同的 commonjs 模块中被调用,
如果在 Node 中运行,testA 将变为 false,但如果在 Chrome 中运行,则 true,而
testB 在这两种情况下都是 true。
如果 foo 与 action 分配到的文件在同一个文件中运行,则代码会始终如一地工作。
谁能复制这个错误,或解释我做错了什么?
干杯
【问题讨论】:
-
在这两种情况下都存在对
MyViewAction的引用?
标签: javascript node.js google-chrome typescript instanceof