JavaScript, создающий новый экземпляр объектов - программирование
Подтвердить что ты не робот

JavaScript, создающий новый экземпляр объектов

Итак, я разрабатываю интерфейс класса книги, и у меня есть курс, определяемый как:

<script>
course = new Object();
 var name;
 var gradingareas;
 var finalgrade;
</script>

то позже я хочу создать новый экземпляр:

 var gradingareas = new Array("Homework", "Classwork", "Exams");

 course1 = new course("CS1500", gradingareas, 85);

Я тоже пробовал без var перед безрезультатно. Я получаю "Uncaught TypeError: Object не является функцией". Я очень новичок в javascript, поэтому я даже не знаю, правильно ли я это сделаю. Любая помощь приветствуется. Спасибо.

4b9b3361

Ответ 1

Существующий код:

// Creates a new, empty object, as a global
course = new Object();
// Creates three new variables in the global scope.
var name;
var gradingareas;
var finalgrade;

Связь между переменными и объектом отсутствует.

Похоже, вы хотите что-то большее:

function Course(name, gradingareas, finalgrade) {
    this.name = name;
    this.gradingareas = gradingareas;
    this.finalgrade = finalgrade;
}

Тогда:

var course1 = new Course("CS1500", gradingareas, 85);

Обратите внимание на использование заглавной буквы для именования функции-конструктора. Это соглашение в сообществе JS.

Ответ 2

JS является прототипом, а не основанной на классе, и если вы новичок в этом, есть преимущества в том, чтобы сразу это изучить, а не пытаться сбрасывать с него классические модели наследования, однако классическое наследование живое и хорошее в JS.

Во всяком случае, чтобы ответить, как вы получите доступ к своим переменным:

course1.name отлично работает с приведенным выше примером.

Если вы хотите приватизировать свои данные, вы можете использовать этот подход, используя закрытие:

var Course = function(name, grade) {
  // Private data
  var private = {
    name: name,
    grade: grade
  }

  // Expose public API
  return {
    get: function( prop ) {
      if ( private.hasOwnProperty( prop ) ) {
        return private[ prop ];
      }
    }
  }
};

Затем создайте новый объект:

var course = new Course('Programming with JavaScript', 'A');

и начните использовать все эти личные данные:

course.get('name');

Конечно, вы, вероятно, захотите, чтобы сеттеры тоже манипулировали этими данными;)