Какой обьект скушает больше памяти?
Такой вариант. function obj1(){ this.func = function(){ alert("Обьект1"); } } Или такой вариант, когда обьект использует внешние функции. function al(msg){ alert(msg) } function obj2(){ this.func=function(){ al("Обьект2"); } } new obj1() > new obj2() ??????????? Пока писал понял:)) Но всё же. Как правильно создавать методы обьекта? Они должны быть маленькими и использовать внешние функции, или можно писать функции прямо в обьекте. При создании обьекта память будет расходоваться сильнее? Как-то тупо описал......ммммм может кто поймёт, что я имею ввиду. |
возьми да проверь что кушает больше памяти, в чем проблема?
не умеешь проверять? нажми в хроме F12 там разберешься если знаешь английский. если не знаешь, то завязывай с программированием. подскажу лишь вкладку Profiles |
Цитата:
|
Цитата:
|
Цитата:
|
нет не сложно, если в одном меньше весит то предполагается что и в другом меньше весит.
|
godofjavascript,
с тобой я уж тем более спорить не собираюсь, считай как считаешь |
Ой. Наверное не понятно я написал. Представьте себе, что функция не алерт, а сложные вычисления на 50 строк. И таких методов в обьекте 100. Делать ли вычисления в методах или через методы просто запускать внешние функции .
Как лучше. Недавно я плагин для оперы написал на фреймворке своём, так на одном сайте за 3 мин было сьедено оперой 8гб оперативы.... Получается увесистые обьекты, если вычисления проводить в них, а не через ссылки на функции? |
Цитата:
|
на мой взгляд у вас оба варианта некорректны,
для каждого нового объекта будет создаваться новая функция, хорошо, пусть там будет не алерт, а супер мега крутая функция по вычислениям, строк эдак на ..., и каждая такая функция будет создаваться каждый раз для нового объекта, правильно будет вынести эту функцию var SuperFunc = function() { // n-строк }; var Obj = function() { this.SuperFunc = SuperFunc; }; var o1 = new Obj(); o1.SuperFunc(); var o2 = new Obj(); o2.SuperFunc(); var Obj = function() { this.SuperFunc = function() { // n-строк }; }; var o1 = new Obj(); o1.SuperFunc(); var o2 = new Obj(); o2.SuperFunc(); первый вариант съест меньше памяти |
var Obj = function() { } Obj.prototype.SuperFunc = function() { alert("Обьект1"); return this; } var o1 = new Obj(); o1.SuperFunc().SuperFunc().SuperFunc().SuperFunc(); |
Цитата:
|
devote,
А через прототип не получится тоже самое? var Obj = function() { } Obj.prototype.SuperFunc = function() { alert("Обьект1"); return this; } оно не равно var Obj = function() { this.superfunc = function() { alert("Обьект1"); return this; } ??? |
Цитата:
|
Цитата:
http://learn.javascript.ru/prototype |
Цитата:
Пойду по ссылке почитаю:) |
Цитата:
Сейчас понимаю её наконец-то:) |
Не всё понятно.
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. |
Цитата:
То есть при создании нового обьекта у меня в памяти будет использовано только то, что занимает function obj(name){this._name=name;} А все функции , добавленные в прототип не будут копироваться. Я как раз и в php понял наследование:) |
Дзен-трансгуманист,
Ваще сказка:). Смотрю сейчас коды , которые хотел понять давно и что-то проясняется теперь. А приватные свойства возможны? "a" ведь не будет видно новым методам? function obj(){ var a = "Я - приватная переменная"; } obj.prototype.getA = function(){return a;}//undefined obj.prototype.A = "Я - публичная переменная"; |
Дзен-трансгуманист,
Получается, что нужно в самом обьекте создавать? function obj(){ var a = "private"; this.getA = function(){return a;} } Или в javascripte не требуется заморачиваться с private protected..... Блин получается тема прототипов чуть ли не самая важнецкая.... |
viktorina,
Стоит для начала прочитать книгу "Дэвид Флэнаган - Javascript. Подробное руководство". На все твои вопросы есть подробные ответы. Это основы javascript. Если вдруг не найдешь, тогда уже на форум. |
Цитата:
Вот как с прототипами....дошёл до того, что стало чего-то не хватать, начал копать, мне указали на прототипы и я понял их важность. Форум - круче книги. Я тут за пару дней больше узнал, чем за 3 года книг и экспериментов:). Теперь жаба давит, что всегда брезговал форумами. |
А вот ещё вопрос.
function f(a){ var b = a; } for(var i = 0; i<1000000; i++;){ f("выполняем много раз"); } var b = a; //новое место на диске. Получается так, что каждый раз при вызове функции мы постоянно определяем var a; Как я себе представляю, то компьютер всегда на диске выбирает новое место и записывает туда новые данные. Это ж долго:). Нельзя ли для каждого нового обьекта создавать отдельное место на диске и просто перезаписывать.... ну в рамках работы этого обьекта. Как бы статическая переменная, но для каждого обьекта своя, чтобы каждая функция использовала свои хранилища. Может я не правильно понимаю var peremennaya.....за ранее прошу прощения... |
Цитата:
Цитата:
При определении функций и переменных, js создает на них ссылки, к которым привязаны ячейки памяти, в которых в дальнейшем и будет записываться и считываться информация. Как-то так. |
|
Gozar,
Спасибо. |
Часовой пояс GMT +3, время: 02:41. |