Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2012, 22:21
Интересующийся
Отправить личное сообщение для Policeman Посмотреть профиль Найти все сообщения от Policeman
 
Регистрация: 26.11.2011
Сообщений: 25

В чем различие добавления свойств/функций классу
Можете подсказать в чем различие добавление свойств/функций классу

Например

function user(){
   this.getName = function(){
      return "Vasya";
   }
}

var u = new user();
u.getName();


или все то же только

function user(){
   
}

user.prototype.getName = function(){
     return "Vasya";
}

var u = new user();
u.getName();


Надеюсь я не чушь написал
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2012, 22:38
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

В первом случае используется так называемый перегруженный конструктор. По факту, объект не имеет никаких свойств, они у него появляются только в момент вызова конструктора. Этот метод не рекомендуется использовать по различным соображениям.
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2012, 22:46
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от DreamTheater
Этот метод не рекомендуется использовать по различным соображениям.
Слышал только о производительности, а о «различных» — нет.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2012, 22:48
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от FINoM Посмотреть сообщение
Слышал только о производительности, а о «различных» — нет.
Производительность это первое. Как написать юнитест, который будет проверять существование того или оного свойства в классе без его инициализации?
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2012, 22:50
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от DreamTheater
Как написать юнитест, который будет проверять существование того или оного свойства в классе без его инициализации?
Зачем?
Да и есть такая штука, как сall и apply.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2012, 22:56
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

В случае перегруженного конструктора невозможно достучаться к свойствам объекта, потому что их не существует.
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2012, 23:01
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от DreamTheater
В случае перегруженного конструктора невозможно достучаться к свойствам объекта, потому что их не существует.
call, apply.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2012, 23:11
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

function Class() {
    this.property = "property";

    this.method = function () {};
}


Каким образом я могу получить доступ к property или method?
Ответить с цитированием
  #9 (permalink)  
Старый 03.03.2012, 23:15
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от DreamTheater
Каким образом я могу получить доступ к property или method?
var o = {};
Class.call(o);
// а здесь проверять, есть ли у "o" соответствующие методы и свойства
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #10 (permalink)  
Старый 03.03.2012, 23:24
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от FINoM Посмотреть сообщение
var o = {};
Class.call(o);
// а здесь проверять, есть ли у "o" соответствующие методы и свойства
В таком случае конструктор выполняется как функция, а мы хотим этого избежать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск