问题:
如何在Chrome中从控制台创建var a1 = Animal('red', 4, 'frank);
我在玩es6的时候创建了一个班级。
"use strict";
class Animal{
constructor(color, legs, name){
this.color = color;
this.legs = legs;
this.name = name;
}
}
export default Animal;
Chrome控制台输入+错误
> var frank = new Animal('red', 4, 'henry');
Uncaught ReferenceError: Animal is not defined
at <anonymous>:2:17
at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)(anonymous function) @ VM13736:2InjectedScript._evaluateOn @ VM13308:895InjectedScript._evaluateAndWrap @ VM13308:828InjectedScript.evaluate @ VM13308:694
的index.html
<script src="../jspm_packages/system.js"></script>
<script src="../config.js"></script>
<script>
System.import('reflect-metadata')
.then(function(){
return System.import('client/app/animal/animal');
})
.then(function(Animal){
window.Animal = Animal;
})
.catch(console.log.bind(console));
</script>
更新: 我已经更新了第二个承诺,将Animal设置为window&amp;&amp;我在控制台测试过。 :(还没有运气
这就是BableJs将类编译为:
var Animal = function Animal(color, legs, name) {
this.color = color;
this.legs = legs;
this.name = name;
};
答案 0 :(得分:1)
我对System
API不是很熟悉,但假设使用模块解决了承诺似乎是合理的。要从控制台将其作为全局变量进行访问,您可以将其分配给window
。
你提到你正在使用Babel。 Babel将默认导出分配给模块的default
属性:
System.import('client/app/animal/animal').then(function(module) {
window.Animal = module.default;
});