#javascript #function #static
#javascript #функция #статический
Вопрос:
я изучаю расширенный класс в javascript с узким классом функций.
В классе Cards: я создал статический объект, и я не могу получить доступ к статической переменной this.number из информации об объекте, именно в «функции».
Можете ли вы дать мне способ получить доступ к статической переменной. Я не могу изменить структуру объекта
Увеличьте масштаб проблемы:
static number = 44;
static info = {
name : "Games",
function(game){
console.log("fonction");
console.log("best card is " game.best);
game.draw();
console.log(this.number); <======= CAN'T HAVE ACCES TO STATIC VARIABLE NUMBER
}
}
Я вызываю с :
President.info.function(partie1);
Он возвращает :
best card is 2 Heart
7 Heart
undefined
У меня еще один вопрос, почему «partie1.name ()» дайте мне ошибку
«Ошибка типа: partie1.name это не функция».
Весь код
class Games {
constructor(name)
{
this.name = name;
this.joueurs = 2;
}
name(){
console.log(this.name);
}
nombre(){
console.log(this.joueurs);
}
}
let Cards = Base => class extends Base {
constructor(name){
super(name);
this.best = "King Heart";
}
static number = 44;
draw(){
console.log("7 Heart");
}
static info = {
name : "Games",
function(game){
console.log("fonction");
console.log("best card is " game.best);
game.draw();
console.log(this.number);
}
}
}
let Dices = Base => class extends Base {
constructor(name){
this.name = name;
this.Dices = [1,2,3,4,5,6];
}
}
class President extends Cards(Games){
constructor(){
super("President");
this.best = "2 Heart";
}
static drawBest(game){
console.log(game.best);
}
}
let duel = new Games("duel");
duel.nombre(); // 2
let partie1 = new President();
President.drawBest(partie1);
//2 Heart
//partie1.name();
//TypeError: partie1.name is not a function
President.info.function(partie1);
// function
// best card is 2 Heart
// 7 Heart
// undefined ???
Комментарии:
1. Я очень смущен. Почему вы возвращаете определения классов из функций со стрелками?
2. потому что благодаря этому я могу расширить свой класс game. Game является основой каждого класса, и я могу расширить его с помощью карт или кубиков, если я хочу создать карточную игру или игру в кости
3.
this
вашinfo
объект, для которого вы вызвали.function
метод. Не вкладывайте объекты, если это не то, что вы хотите. Альтернативой может быть использование функции со стрелкой, но на самом деле неясно, чтоinfo
должен делать метод, почему он принимает экземпляр в качестве аргумента и почему это не просто простой метод экземпляра.4. Я не могу изменить структуру, потому что информация об объекте будет общим объектом для всего моего класса, только с другим значением, и я вызываю этот информационный объект в другом файле. Теперь я понимаю, почему это не работает, но как я могу получить доступ к статическому значению? Может быть, экспорт?
Ответ №1:
ИСПРАВЛЕНО :
static info = {
name : "Games",
function : (game) => {
console.log("fonction");
console.log("best card is " game.best);
game.draw();
console.log(Cards.number); //undefined
console.log(this.number); //undefined
}
}