@bitande
PHP

Запутался в объектах JavaScript?

Запутался в объектах и их свойствах, слишком много нюансов.

вот есть такой объект

var user = 
{
  name: 'Alex',
  age: 2321
}


это как бы ассоциативный массив, ведь в js есть массивы только с числовыми индексами.
--------------------------------------------------------------------------
А теперь это как бы объект с методами.

var user = 
{
  name: 'Alex',
  age: 2321,

  sayHi: function() {
  console.log('Hello ' + this.name); 
  }
} 

user.sayHi();


-------------------------------------------------------------------------------------
а теперь используем функцию как конструктор объекта

function User(name) 
{ 
  this.name = name; 
  this.age = 2321; 

  this.sayHi = function() { 
  console.log('Hello ' + this.name); 
  }; 
} 

var obj = new User('Alex'); 

alert(obj.name);


------------------------------------------
получается первое это - как бы обычный ассоциативный массив в котором могут быть и массивы и объекты.

второй объект - это что-то непонятное, как бы неполноценный объект. ассоциативный массив с методами.

третий - полноценный класс, объект.

я правильно все понял?
  • Вопрос задан
  • 228 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Div100
да, а это метод класса

User.prototype.sayHi = function () {
    console.log(this.name);
}

var user =new User('Alex');
user.sayHi();
Ответ написан
Комментировать
Все записи эквивалентны и являются объектами. Единственное отличие, что у третьего вида будет свойство prototype.constructor заполнено вашей функцией User.
Функция в JS - это ни что иное как объект, который может быть вызван ( оператор "()"). C этой точки зрения объекту совершенно всё равно, что хранится по ключу.
Понятия Ассоциативный массив в JS нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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