Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.01.2013, 12:06
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var Obj = function() {
}

Obj.prototype.SuperFunc = function() {
    alert("Обьект1");
    return this;
}

var o1 = new Obj();
o1.SuperFunc().SuperFunc().SuperFunc().SuperFunc();
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #12 (permalink)  
Старый 10.01.2013, 12:41
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Сообщение от Dmitriyff
правильно будет вынести эту функцию
Спасибо. А если через прототип добавлять методы, то тоже нужно выносить функции?
Ответить с цитированием
  #13 (permalink)  
Старый 10.01.2013, 12:44
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

devote,
А через прототип не получится тоже самое?
var Obj = function() {
	}
	 
	Obj.prototype.SuperFunc = function() {
	    alert("Обьект1");
	    return this;
	}

оно не равно 

var Obj = function() {
this.superfunc = function() {
	    alert("Обьект1");
	    return this;
	}	
???
Ответить с цитированием
  #14 (permalink)  
Старый 10.01.2013, 12:59
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Сообщение от Дзен-трансгуманист
Это не то же самое, во втором случае каждый раз создается новое замыкание.
То есть самый оптимальный и правильный вариант - добавление методов через прототип?
Ответить с цитированием
  #15 (permalink)  
Старый 10.01.2013, 13:19
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от viktorina
Недавно я плагин для оперы написал на фреймворке своём
и при этом ты не знаешь что такое прототип и для чего он используется? И еще, судя по всему путает понятия прототип и function.prototype.

http://learn.javascript.ru/prototype
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 10.01.2013 в 13:31.
Ответить с цитированием
  #16 (permalink)  
Старый 10.01.2013, 14:09
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Сообщение от nerv_
И еще, судя по всему путает понятия прототип и function.prototype.
Хм(делаю умный вид).....
Пойду по ссылке почитаю
Ответить с цитированием
  #17 (permalink)  
Старый 10.01.2013, 14:25
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Сообщение от Дзен-трансгуманист
Добро пожаловать в язык.
Я несколько раз уже читал эту статью давно
Сейчас понимаю её наконец-то
Ответить с цитированием
  #18 (permalink)  
Старый 10.01.2013, 16:05
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Не всё понятно.
function obj(selector){
this.getElements = function(){
              this.e = document.querySelectorAll(selector);
              return this;
              }

this.style= function(st){
              this.e[0].style.color="blue";
              return this;
             }

this.animate = function(anim){
                  .......... ; 
                  return this;}
}


Это лучше делать через прототип? Почему сразу это не вписать в обьект?
function obj(selector){}

obj.prototype.getElements = function(){}
obj.prototype.style = function(){}
obj.prototype.animate = function(){}


Не могу вникнуть в разницу.
Или сразу вписать или потом добавить через prototype.
Ответить с цитированием
  #19 (permalink)  
Старый 10.01.2013, 17:36
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Сообщение от Дзен-трансгуманист
ты не создаешь для каждого объекта каждый раз новые свойства для функций и новые функции для этих свойств.
Ваааау. В статье это не написано и я сомневался. Спасибо.
То есть при создании нового обьекта у меня в памяти будет использовано только то, что занимает
function obj(name){this._name=name;}

А все функции , добавленные в прототип не будут копироваться.
Я как раз и в php понял наследование
Ответить с цитированием
  #20 (permalink)  
Старый 10.01.2013, 18:09
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

Дзен-трансгуманист,
Ваще сказка. Смотрю сейчас коды , которые хотел понять давно и что-то проясняется теперь.
А приватные свойства возможны?
"a" ведь не будет видно новым методам?
function obj(){
            var a = "Я - приватная переменная";
}
obj.prototype.getA = function(){return a;}//undefined
obj.prototype.A = "Я - публичная переменная";

Последний раз редактировалось viktorina, 10.01.2013 в 18:20.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли узнать какой объем памяти занимает переменная? jsuse Общие вопросы Javascript 23 05.04.2016 08:56
Утечки памяти: как сделать ? Draeden Events/DOM/Window 10 30.08.2009 18:16