Доступ к методам и атрибутам объекта приводит к ошибке в JavaScript

0

У меня есть это объявление объекта внутри модуля Angular.js:

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

И когда я вызываю метод push этого объекта, я получаю undefined ошибку:

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

Зачем?

Теги:

1 ответ

1
Лучший ответ

Я не думаю, что вы делаете то, что вы действительно хотите сделать. Вы создаете функцию Stack а затем код:

$scope.Stack.push(1)

Вызывает свойство push для функции Stack (которая не существует). Скорее всего, вы хотите создать экземпляр Stack и push на него.

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

Это будет работать в большинстве случаев. Но будьте осторожны, this динамически определяется. Я предлагаю вам прочитать об this в MDN.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню