Какой обьект скушает больше памяти?
Такой вариант.
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, время: 15:08. |