Дайте ему относительный путь, как
require('./app/models/permission') // add ./
Это вызвано тем, что
Методы Класса объекта динамично создаются на прототипе Объекта. Для переопределения этого метода в подклассе Объекта не используйте ключевое слово переопределения. Например, подкласс Объектных реализаций функционируют toString (): Строка вместо того, чтобы использовать переопределение базового класса.
Таким образом, при кастинге TestTwo к Объекту компилятор знает, что те методы будут реализованы. Если Вы не бросаете его, TestTwo не наследовал те методы и таким образом, они не были реализованы, и будет ошибка.
Это - что-то вроде странного!
Наследование классов и опытное наследование являются двумя разными вещами в AS3. Опытное наследование состоит в том насколько я понимаю включенный для назад совместимости с AS2/AS1, и это - опытное наследование, которое это обеспечивает toString()
метод на переменной это брошено к Классу объекта в Вашем примере. Объектный прототип имеет toString()
метод, не Класс объекта. Так как прототип не присутствует на Вашем классе TestTwo, он не имеет a toString()
метод. Если toString()
метод был предоставлен через наследование классов вместо этого, Ваш пример скомпилирует.
Так технически Ваш оператор "All Objects in actionscript3.0 inherit from the Object class" не совсем корректен из-за различия между опытным наследованием и наследованием классов. Опытное наследование является несколько тайным понятием OO, найденным на языках сценария.
Кто-либо знает причину, почему AS3 разработан как это?