我有这种奇怪的行为,并希望你能帮助我。 =)节点与Chrome,实现instanceof,多个文件
我有一个设置,我需要运行JavaScript
测试使用Mocha
。代码从TypeScript
生成,并且测试在浏览器和nodejs
中通过browserify
和commonjs
模块运行。问题是我想使用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
模块, testA
成为false
如果运行Node
但true
如果Chrome
运行,而 testB
是在两种情况下true
。
如果foo与分配给动作的文件在同一个文件中运行,则代码将一致地工作。
任何人都可以复制这个错误,或解释我做错了什么?
干杯
对'MyViewAction'的引用在两种情况下都存在吗? – Sirko