Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какой обьект скушает больше памяти? (https://javascript.ru/forum/misc/34558-kakojj-obekt-skushaet-bolshe-pamyati.html)

devote 10.01.2013 12:06

var Obj = function() {
}

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

var o1 = new Obj();
o1.SuperFunc().SuperFunc().SuperFunc().SuperFunc();

viktorina 10.01.2013 12:41

Цитата:

Сообщение от Dmitriyff
правильно будет вынести эту функцию

Спасибо. А если через прототип добавлять методы, то тоже нужно выносить функции?

viktorina 10.01.2013 12:44

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

оно не равно 

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

viktorina 10.01.2013 12:59

Цитата:

Сообщение от Дзен-трансгуманист
Это не то же самое, во втором случае каждый раз создается новое замыкание.

То есть самый оптимальный и правильный вариант - добавление методов через прототип?

nerv_ 10.01.2013 13:19

Цитата:

Сообщение от viktorina
Недавно я плагин для оперы написал на фреймворке своём

и при этом ты не знаешь что такое прототип и для чего он используется? :) И еще, судя по всему путает понятия прототип и function.prototype.

http://learn.javascript.ru/prototype

viktorina 10.01.2013 14:09

Цитата:

Сообщение от nerv_
И еще, судя по всему путает понятия прототип и function.prototype.

Хм(делаю умный вид).....:)
Пойду по ссылке почитаю:)

viktorina 10.01.2013 14:25

Цитата:

Сообщение от Дзен-трансгуманист
Добро пожаловать в язык.

Я несколько раз уже читал эту статью давно:)
Сейчас понимаю её наконец-то:)

viktorina 10.01.2013 16:05

Не всё понятно.
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.

viktorina 10.01.2013 17:36

Цитата:

Сообщение от Дзен-трансгуманист
ты не создаешь для каждого объекта каждый раз новые свойства для функций и новые функции для этих свойств.

Ваааау:). В статье это не написано:) и я сомневался:). Спасибо.
То есть при создании нового обьекта у меня в памяти будет использовано только то, что занимает
function obj(name){this._name=name;}

А все функции , добавленные в прототип не будут копироваться.
Я как раз и в php понял наследование:)

viktorina 10.01.2013 18:09

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


Часовой пояс GMT +3, время: 02:38.