如何打电话给班级'构造函数来创建'来自Chrome控制台?

时间:2015-05-31 06:37:30

标签: javascript google-chrome

问题: 如何在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;我在控制台测试过。 :(还没有运气 object is not a function

这就是BableJs将类编译为:

var Animal = function Animal(color, legs, name) {


    this.color = color;
    this.legs = legs;
    this.name = name;
};

enter image description here

1 个答案:

答案 0 :(得分:1)

我对System API不是很熟悉,但假设使用模块解决了承诺似乎是合理的。要从控制台将其作为全局变量进行访问,您可以将其分配给window

你提到你正在使用Babel。 Babel将默认导出分配给模块的default属性:

System.import('client/app/animal/animal').then(function(module) {
    window.Animal = module.default;
});