@neoneel

Как обратиться к аргументам конструктора класса?

class NameClass{
	constructor(){
		//
                //
	}
method1(){
//
//
}
}

как передать аргументы конструктора в method1?
или как реализовать добавление обектов в связный список при создании нового списка?
  • Вопрос задан
  • 326 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Обратиться к аргументам конструктора из методов класса нельзя, но можно сделать их в конструкторе полями класса:
class Counter {
  constructor(value) {
    this.value = value || 0;  // определяем поле класса value со значением аргумента value
  }                           // либо 0 если аргумент не будет передан
  
  getVaue() {
    return this.value;
  }

  increment() {
    return ++this.value;
  }

  decrement() {
    return --this.value;
  }
}


Связанный список рекомендую попробовать написать своими силами. Если не хотите сами, то смотрите под спойлером.
spoiler
class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
    this.length = 0;
    
    Array.prototype.forEach.call(arguments, data => this.add(data));
  }

  add(data) {
    const nodeToAdd = new Node(data);
    let nodeToCheck = this.head;

    if(!nodeToCheck) {
      this.head = nodeToAdd;
      this.length++;
      return nodeToAdd;
    }

    while(nodeToCheck.next) {
      nodeToCheck = nodeToCheck.next;
    }
    
    nodeToCheck.next = nodeToAdd;
    this.length++;

    return nodeToAdd;
  }

  get(num) {
    const nodeToCheck = this.head;
    let count = 0;
  
    if(num > this.length) {
      return "Doesn't Exist!"
    }

    while(count < num) {
      nodeToCheck = nodeToCheck.next;
      count++;
    }

    return nodeToCheck;
  }

  remove(num) {
    let nodeToCheck = this.head;
    let length = this.length;
    let count = 0;
    let prevNode = null;
     
     if(num > length) {
       return "Doesn't Exist!"
     }
   
     if(num === 0) {
       this.head = nodeToCheck.next;
       this.length--;
       return this.head;
     }
     
     while(count < num) {
       prevNode = nodeToCheck;
       nodeToCheck = nodeToCheck.next;
       count++;
     }
     
     prevNode.next = nodeToCheck.next;
     nodeToCheck = null;
     this.length--;
      
     return this.head;
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы