访问对象的方法和属性会导致javascript中的错误

时间:2015-07-02 04:49:41

标签: javascript angularjs

我在Angular.js模块中声明了一个对象:

    $scope.Stack = function () {
        this.top = null;
        this.size = 0;
    };

当我调用该对象的push方法时,我得到undefined错误:

    $scope.Stack.push = function (data) {
        return this.size;
    };

为什么?

1 个答案:

答案 0 :(得分:1)

我不认为你正在做你真正想做的事。您正在创建一个名为Stack的函数,然后是代码:

$scope.Stack.push(1)

push函数上调用Stack属性(该函数不存在)。您更有可能想要创建Stack的实例并在其上调用push

var myStack = new $scope.Stack();
myStack.push(1);  // Yay!

这在大多数情况下都有效。但请注意this是动态定义的。我建议你阅读this at MDN