未捕获的TypeError:undefined不是函数

时间:2014-05-29 10:13:01

标签: javascript createjs

Button.js:

(function () {
    function Button(label) {
        console.log(label);
    }
}());

demo.html:

<html>

<head>
    <script src="../../lib/easeljs-0.7.1.min.js"></script>
    <script src="Button.js"></script>
    <script>
        window.onload = function() {
            var canvas, stage, button;
            canvas = document.getElementById("canvas");
            stage = new createjs.Stage(canvas);
            button = new createjs.Button("Anything");
            stage.addChild(button);
            stage.update();
        }
    </script>
</head>

<body>
    <canvas id="canvas" width=200 height=200>Canvas is not supported</canvas>
</body>

</html>

为该行 button = new createjs.Button(“Anything”); 错误:未捕获TypeError:undefined不是函数 为什么我收到此错误?

2 个答案:

答案 0 :(得分:2)

这是因为Button不在全球范围内或window

这里你不需要IEFE。删除它:

function Button(label) {
   console.log(label);     
}

如果您想使用IEFE,请执行以下操作:

$(function () {
    window.Button = function (label) {
        console.log(label);
    }
});

答案 1 :(得分:1)

如果您想使用Button访问createjs.Button,则必须在Button对象上创建createjs

createjs.Button = function(label){
    console.log(label);
};

上述内容适用于任何范围,包括全局和函数表达式,因为createjs位于全局范围内。现在你可以做到:

button = new createjs.Button("Anything");