Как в Jasmine протестировать данный код, а именно метод getNumber()
?
const PageFactory = SuperClass => class extends SuperClass {
getNumber() {
.......
}
пробовал через
new PageFactory(null)
через просто
PageFactory.getNumber
пишет
TypeError is not a constructor(evaluating 'PageFactory.getNumber())
или
_pageFactory["default"].getNumber()
Проблема заключается в том, как разбирается выражение
new PageFactory(null)
PageFactory
- это стрелочная функция, а стрелочные функции не могут быть конструкторами. И в текущей записи оператор new
применяется к самой функции PageFactory
, а не к ее результату.
Простой вариант, обернуть вызов функции в круглые скобки.
const PageFactory = SuperClass => class extends SuperClass {
getNumber() {
console.log('get number', this.num);
}
}
class S {
constructor() {
this.num = 10;
}
}
(new(PageFactory(S))).getNumber();
С null
не все так однозначно. При попытке использовать null
, создать экземпляр будет не тривиально:
class A extends null {
getNumber() {
return 20;
}
}
new A();
Как можно заметить, будет брошено исключение.
Для того, чтобы все-таки создать экземпляр, нужно изменить функцию конструктора:
class A extends null {
constructor() {
var _this = Object.create(new.target.prototype);
return _this;
}
getNumber() {
return 10234;
}
}
console.log((new A()).getNumber());
extends null
- так себе идея. Используй Object
.new
при использовании скобок вызова приоритет не тот.Надо так:
const PageFactory = SuperClass => class extends SuperClass {
getNumber() {
return 42;
}
}
var Constructor = PageFactory(Object);
var a = new Constructor(); // или new Constructor
console.log(a.getNumber());
var b = new (PageFactory(Object)); // обращаю внимание на скобки
console.log(b.getNumber());
try {
var c = new PageFactory(Object); // ошибка: (new PageFactory)(Object)
console.log(b.getNumber());
} catch (ex) {
console.log(ex.message);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, столкнулся с проблемой в fancybox 3Дело в том что после навигации по картинкам чтобы вернутся назад на предыдущую страницу на кнопку...
есть 2 кнопки старт и пауза как реализовать код чтобы это была одна кнопка тоесть при нажатии на старт один раз она менялась на паузу потом...
Интересует возможность изменения входящего параметра в дериктиве
Мне нужно создать одну программуВ ней требуются знания JS, которых у меня пока нет