Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS. prototype.Method и this.Method / 10 сообщений из 10, страница 1 из 1
17.10.2014, 12:24
    #38779732
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
Всем привет!
Недавно начал работать с JS. И не могу понять в чем разница между:
Код: javascript
1.
2.
3.
4.
var Obj = function () {
    this.someMethod = function () {        
    };
};


и
Код: javascript
1.
2.
3.
var Obj = function () { };
Obj.prototype.someMethod = function () {
};
...
Рейтинг: 0 / 0
17.10.2014, 12:35
    #38779760
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
...
Рейтинг: 0 / 0
17.10.2014, 13:36
    #38779929
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
T_STVв чем разница между
Как минимум во времени создания...
Первый вариант - метод объявляется в функции конструкторе. Второй вариант объявляет метод уже после создания функции-конструктора...
...
Рейтинг: 0 / 0
17.10.2014, 13:44
    #38779952
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
А вот демонстрация "основного" различия

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
var Obj = function () {
	/*
	// снять комментарий после запуска
	this.someMethod = function () {        
		alert(1);
	};
	*/
};
Obj.prototype.someMethod = function () {
	alert(2);
};
var Obj1 = function () {};
Obj1.prototype = new Obj
var Obj2 = function () {};
Obj2.prototype = new Obj

var o=new Obj;
var o1=new Obj1;
var o2=new Obj2;

o.someMethod();
o1.someMethod();
o2.someMethod();

Obj.prototype.someMethod = function () {
	alert(3);
};

o.someMethod();
o1.someMethod();
o2.someMethod();
...
Рейтинг: 0 / 0
17.10.2014, 13:55
    #38779973
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
у Кантора на кроликах хорошо описано :)
http://javascript.ru/tutorial/object/inheritance
...
Рейтинг: 0 / 0
17.10.2014, 14:18
    #38780015
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
-k2-у Кантора на кроликах хорошо описано :)
Скорее на хомяках...
...
Рейтинг: 0 / 0
17.10.2014, 20:50
    #38780546
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
-k2-у Кантора на кроликах хорошо описано :)
http://javascript.ru/tutorial/object/inheritance
Хм.. прочитал. Пишет:
авторАльтернативный подход заключается в добавлении методов объекту в его конструкторе.
...
Рейтинг: 0 / 0
17.10.2014, 20:53
    #38780550
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
krvsaА вот демонстрация "основного" различия

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
var Obj = function () {
	/*
	// снять комментарий после запуска
	this.someMethod = function () {        
		alert(1);
	};
	*/
};
Obj.prototype.someMethod = function () {
	alert(2);
};
var Obj1 = function () {};
Obj1.prototype = new Obj
var Obj2 = function () {};
Obj2.prototype = new Obj

var o=new Obj;
var o1=new Obj1;
var o2=new Obj2;

o.someMethod();
o1.someMethod();
o2.someMethod();

Obj.prototype.someMethod = function () {
	alert(3);
};

o.someMethod();
o1.someMethod();
o2.someMethod();



Не понял. Типа нельзя переопределить метод, если он в конструкторе задан?
...
Рейтинг: 0 / 0
17.10.2014, 21:17
    #38780555
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
Нашел ответ на свой вопрос тут http://habrahabr.ru/post/11673/
...
Рейтинг: 0 / 0
17.10.2014, 22:51
    #38780588
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS. prototype.Method и this.Method
T_STVТипа нельзя переопределить метод, если он в конструкторе задан?
Он четко "привязывается" к своему объекту (экземпляру). Переопределить можно только у каждого экземпляра в отдельности.

Тут главное точно понимать "природу" конструктора с this и прототипа...
При объявлении чего-либо через прототип, при такой же смене - поменяется у всех объектов, кроме тех, кто сам его переопределил.
При объявлении в конструкторе переопределить что-либо можно только у конкретного объекта.

А вот чем пользоваться и в каком случае выбирать тот вариант или другой зависит от конкретных задач.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS. prototype.Method и this.Method / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]