Рамблер новый дизайн. Рамблер почта (вход, настройка, работа с входящими) и ее место среди других сервисов бесплатных электронных ящиков. Как написать новое письмо в Rambler почте

depp 7 января 2009 в 23:56

Работа с объектами в JavaScript: теория и практика

  • JavaScript

В этой статье я хочу по возможности полно и последовательно рассказать о том, что такое объект в JavaScript, каковы его возможности, какие взаимоотношения могут строиться между объектами и какие способы «родного» наследования из этого вытекают, как это все влияет на производительность и что вообще со всем этим делать:)

В статье НЕ будет ни слова про: эмуляцию традиционной класс-объектной парадигмы, синтаксический сахар, обертки и фреймворки.

Сложность материала будет нарастать от начала к концу статьи, так что для профи первые части могут показаться скучными и банальными, но дальше будет намного интереснее:)

Объекты в JavaScript

Во многих статьях встречается фраза «В JavaScript - всё объект». Технически это не совсем верно, однако производит должное впечатление на новичков:)

Действительно, многое в языке является объектом, и даже то, что объектом не является, может обладать некоторыми его возможностями.

Важно понимать, что слово «объект» употребляется здесь не в смысле «объект некоторого класса». Объект в JavaScript - это в первую очередь просто коллекция свойств (если кому проще, может называть это ассоциативным массивом или списком), состоящая из пар ключ-значение. Причем ключом может быть только строка (даже у элементов массива), а вот значением - любой тип данных из перечисленных ниже.

Итак, в JavaScript есть 6 базовых типов данных - это Undefined (обозначающий отсутствие значения), Null, Boolean (булев тип), String (строка), Number (число) и Object (объект).
При этом первые 5 являются примитивными типами данных, а Object - нет. Кроме того, условно можно считать, что у типа Object есть «подтипы»: массив (Array), функция (Function), регулярное выражение (RegExp) и другие.
Это несколько упрощенное описание, но на практике обычно достаточное.

Кроме того, примитивные типы String, Number и Boolean определенным образом связаны с не-примитивными «подтипами» Object: String, Number и Boolean соответственно.
Это означает, что строку "Hello, world", например, можно создать и как примитивное значение, и как объект типа String.
Если вкратце, то это сделано для того, чтобы программист мог и в работе с примитивными значениями использовать методы и свойства, как будто это объекты. А подробнее об этом можно будет прочитать в соответствующем разделе данной статьи.

Работа по ссылке

Ссылка - это средство доступа к объекту под различными именами. Работа с любыми объектами ведется исключительно по ссылке.
Продемонстрируем это на примере:
test=function () {alert("Hello!" )} //Создадим функцию {alert("Hello!")} (а функция, как мы помним, является полноправным объектом) и сделаем переменную test ссылкой на нее
test_link=test; //test_link теперь тоже ссылается на нашу функцию
test(); //Hello!
test_link(); //Hello!


Как мы видим, и первая ссылка, и вторая дают один и тот же результат.
Необходимо осознать, что у нас нет никакой функции с именем test, и что переменная test не является какой-то «главной» или «основной» ссылкой, а «test_link» - второстепенной.

Наша функция, как и любой другой объект - просто область в памяти, и все ссылки на эту область абсолютно равнозначны. Более того, объект может вообще не иметь ссылок - в таком случае он называется анонимным, и может быть использован только непосредственно сразу после создания (например, передан в функцию), иначе доступ к нему получить будет невозможно и в скором времени он будет уничтожен сборщиком мусора (garbage collection), который и занимается тем, что удаляет объекты без ссылок.

Посмотрим, почему так важно это понимать:

test={prop: "sometext" } //Создаем объект со свойством prop
test_link=test; //Создаем еще одну ссылку на этот объект

Alert(test.prop); //sometext

//Изменяем свойство объекта
test_link.prop="newtext" ;

Alert(test.prop); //newtext
alert(test_link.prop); //newtext
/*Можно было бы сказать, что свойство изменилось и там и тут - но это не так.
Объект-то один. Так что свойство изменилось в нем один раз, а ссылки просто продолжают указывать туда, куда и указывают. */

//Добавляем новое свойство и удаляем старое
test.new_prop="hello" ;
delete test.prop;

Alert(test_link.prop); //undefined - такого свойства больше нет
alert(test_link.new_prop);

//Удаляем ссылку
delete test;
alert(test.new_prop);
/*В этом месте скрипт выкинет ошибку, потому что test уже не существует, и test.new_prop не существует тем более */
alert(test_link.new_prop); //hello
/* а вот тут все в порядке, ведь мы удалили не сам объект, а лишь ссылку на него. Теперь на наш объект указывает единственная ссылка test_link */

//Создаем новый объект
test=test_link; //Сперва снова создадим ссылку test
test_link={prop: "sometext" } //А вот и новый объект

Alert(test_link.prop); //sometext
alert(test.prop); //undefined
/* Cоздание нового объекта разрывает ссылочную связь, и теперь test и test_link указывают на разные объекты.
Фактически, это равносильно удалению ссылки test_link и созданию ее заново, но уже указывающей на другой объект */
alert(test.new_prop); //hello - теперь test содержит ссылку на наш самый первый объект


* This source code was highlighted with Source Code Highlighter .

Такое поведение объектов часто вызывает массу вопросов у начинающих разработчиков, так что надеюсь данный текст внесет некоторую ясность. Если же мы хотим создать действительно новую, независимую копию объекта, а не ссылку - то единственный способ сделать это - создать новый объект и скопировать туда требуемые свойства.

Также стоит отметить, что работа с объектами по ссылке, помимо вышеперечисленных забавных эффектов дает также значительную экономию памяти, что немаловажно при широком использовании одного объекта в различных местах программы.

Примитивные значения

Как я упоминал выше, типы данных String и Number могут быть как объектами, так и примитивными значениями.
obj=new String("hello" ); //Создаем строку как объект
simple="hello" ; //Создаем примитивное значение

Alert(obj); //hello
alert(simple); //hello - пока все предсказуемо

Alert(obj.length); //6 - у объекта типа String есть свойство length, хранящее длину строки
alert(simple.length); //6
/* Хотя simple - не объект, мы можем обращаться к тому же набору свойств, что и у объекта типа String. Это довольно удобно */

Obj.prop="text" ;
simple.prop="text" ;

Alert(obj.prop); //text - раз obj обычный объект, то мы можем запросто придать ему еще одно свойство
alert(simple.prop); //undefined - а вот simple не объект, и этот номер у нас не пройдет

* This source code was highlighted with Source Code Highlighter .


Все то же самое справедливо и для типа Number, и для Boolean (ну, кроме того, что в них нет свойства length, а есть ряд других замечательных свойств).
Использование строк и чисел как объектов не несет в себе никакой практической пользы, т.к. примитивные значения удобнее в работе, но сохраняют при этом весь необходимый функционал. Тем не менее, для полноты картины необходимо понимать этот механизм.

Не стоит путать использование примитивных значений с использованием литералов - например, независимо от того, создаем мы массив как «test=new Array()» или как «test=», в результате все равно будет один и тот же объект. Никаких примитивных значений мы не получим.

Создание и использование объектов

Итак, в отличии от языков, где реализована класс-объектная парадигма, нам не нужно создавать сначала класс, чтобы потом создать объект класса. Мы можем сразу создать объект, что и сделаем в следующем примере:
test={
simple_property: "Hello" ,
object_property: {
user_1: "Петя" ,
user_2: "Вася"
},
function_property: function (user) {
alert(this .simple_property + ", " + this .object_property);
}
}

Test.function_property("user_1" ); //Hello, Петя.

* This source code was highlighted with Source Code Highlighter .


Перед нами объект test, имеющий 3 свойства, названия которых, как я надеюсь, говорят сами за себя. Больше всего нас в нем интересует свойство function_property, содержащее функцию. Такую функцию можно назвать методом объекта.

В нашей функции дважды используется ключевое слово this, которое является указателем (т.е. ссылкой) на объект, из которого вызывается функция. Таким образом, this.simple_property=test.simple_property="Hello", а this.object_property=test.object_property="Петя".

Необходимо четко осознавать, this всегда указывает именно на объект, из которого вызвана функция, а не на объект, к которому она принадлежит. Хотя в данном примере это один и тот же объект, это не всегда так.

test.function_property("user_1" ); //Hello, Петя.

Test2=new Object(); //Еще одна форма создания нового объекта, аналогичная test2={}

Test.function_property.call(test2, "user_1" ); //ошибка
/* Метод call позволяет вызвать функцию от имени другого объекта. В данном случае, мы вызываем метод function_property объекта test, и его this указывает уже не на объект test, а на объект test2. А т.к. в нем нет свойства object_property, то при попытке получить this.object_propertyскрипт выдаст ошибку */

//попробуем исправить ситуацию
test2.simple_property="Good day" ;
test2.object_property=test.object_property; //В данном случае воспользуемся указанием объекта по ссылке, чтобы не дублировать код

Test.function_property.call(test2, "user_1" ); //Good day, Петя.


* This source code was highlighted with Source Code Highlighter .

Из примера также должно быть видно, что нет четких этапов создания и использования объекта. Объект может быть как угодно модифицирован в любое время - до, после и даже во время использования. Это тоже важное отличие от «традиционного» ООП.

Конструктор

В примере выше мы создавали 2 объекта, обладающих некой схожестью. И там и там имелись свойства simple_property и object_property. Очевидно, что при написании реального кода также нередко встает задача создания одинаковых или просто похожих объектов. И разумеется, мы не должны каждый такой объект создавать вручную.

На помощь нам придет конструктор. Конструктор в JavaScript - это не часть класса (потому что здесь нет классов), а просто самостоятельная функция. Самая обычная функция.

make_me=function (_name) {
alert("меня запустили" );
this .name=_name;

}


/* Давайте разберемся, что здесь происходит. Интерпретатор видит оператор new и проверяет, что находится справа от него. Т.к. make_me - это функция, и она может быть использована в качестве контруктора, то создается новый объект в памяти и запускается на выполнение функция make_me, причем ее this указывает как раз на этот новый объект. Далее этому объекту добавляется свойство name, которому присваивается значение из аргумента _name, и метод show_name. Также (не знаю в какой именно момент, но это и не важно) переменная child начинает указывать на наш новенький, только что рожденный объект */

Alert(child.name); //Вася
child.show_name(); //Вася


child2.show_name(); //Петя

Child2.show_name=function () {alert("Не буду говорить свое имя" );} //Не забываем, что можем изменять наши объекты в любой момент
child2.show_name(); //Не буду говорить свое имя

Child.show_name(); //Вася - дети никак не влияют друг на друга


* This source code was highlighted with Source Code Highlighter .

Также можно сравнить конструктора с отцом - он порождает ребенка, наделяя его определенными качествами, но сразу после создания ребенок становится полностью независим от родителя и может стать очень непохожим на своих братьев.
Если мы вспомним про описание типов данных в начале статьи, то становится понятно, что Object и его подтипы (Function, Array и другие) - это на самом деле конструкторы, придающие создаваемому объекту возможности функции, массива и т.д.

Итак, это уже намного лучше. У нас теперь есть возможность создавать объекты по некоторому образцу. Однако, не все еще хорошо. Во-первых, каждый созданный нами объект и все его свойства и методы занимают отдельное место в памяти, хотя во многом они повторяются. Во-вторых, как быть, если мы хотим сохранить связь между родителем и ребенком, и иметь возможность менять все дочерние объекты разом. На помощь нам придет прототип.

Прототип

Как у каждого ребенка есть отец и мать (хотя бы в биологическом смысле), также они есть и у каждого объекта в JavaScript. И если отец, как мы определелись, работает конструктором, то мать - это как раз прототип. Посмотрим, как это происходит:
make_me=function (_name) {
alert("меня запустили" );
this .name=_name;
this .show_name=function () {alert(this .name);}
}
/*
Видя ключевое слово function, интерпретатор проверяет код справа от него, и т.к. все ок - создает новый объект в памяти, который одновременно является нашей функцией. Затем, автоматически (без участия программиста) для этой функции создается свойство prototype, ссылающееся на пустой объект. Если бы мы это делали вручную, это выглядело бы как make_me.prototype=new Object();

Затем, данному объекту (на который указывает свойство prototype) также автоматически добавляется свойство constructor, указывающее обратно на функцию. Получается такая вот циклическая ссылка.

Теперь этот объект, который можно описать как {constructor: ...здесь ссылка на фунцию...} - и есть прототип функции.
*/

//Object - действительно, объект
alert(typeof make_me.prototype.constructor); //Function - это наша функция
alert(make_me.prototype.constructor === make_me); //true

//Добавляем в прототип функции make_me новый метод

Child=new make_me("Вася" ); //меня запустили
/* Теперь помимо всего того, что описано в предыдущем примере, дополнительно в объекте child создается скрытое свойство [], которое указывает на тот же объект, что и make_me.prototype. Т.к. свойство скрыто, мы не можем ни просмотреть его значение, ни изменить его - однако оно играет важную роль в дальнейшей работе */

Alert(child.name); //Вася
child.show_name(); //Вася

Child.set_name("Коля" );
/* Сначала, интерпретатор ищет метод set_name в объекте child. Так как его там нет, он продолжает поиск в свойстве child.[], находит его там и запускает. */
child.show_name(); //Коля - теперь Васю зовут Коля:)

Make_me.prototype.show_name2=function () {alert("Привет, " + this .name;} //Т.к. прототип - это обычный объект, мы точно также можем его менять на лету

Child2=new make_me("Петя" );
child2.show_name2(); //Привет, Петя
child.show_name2(); //Привет, Коля - изменения в прототипе влияют не только на вновь созданные объекты, но и на все старые

Child2.show_name2=function () {alert("Не буду говорить свое имя" );} //Мы по прежнему можем изменить сам объект, при этом новый метод show_name2 в данном объекте (и только в нем) как бы "затрет" старый метод из прототипа
child2.show_name2(); //Не буду говорить свое имя - т.к. у нас теперь есть собственный метод show_name2, то он и вызывается, и поиск в прототипе не происходит

Child.show_name2(); //Привет, Коля - здесь все по прежнему

Make_me.prototype={prop: "hello" } //Попробуем пересоздать прототип заново

Alert(child.prop); //undefined
child.show_name2(); //Привет, Коля
/* Если вспомнить, что такое работа по ссылке, то все понятно. Пересоздание прототипа рвет связь, и теперь свойство [] у объектов child и child2 указывают на один объект (который раньше был прототипом функции make_me), а свойство make_me.prototype - на другой объект, который является новым прототипом функции make_me */

Child3=new make_me("Олег" );
alert(child3.prop); //hello - что и следовало ожидать


* This source code was highlighted with Source Code Highlighter .

Как видно из примера, пока отец сохраняет верность матери (т.е. пока протип функции остается прежним), все дети зависят от матери и чутко реагируют на все изменения в ней. Однако, стоит только родителям развестись (конструктор меняет прототип на другой) - дети тут же разбегаются кто куда и больше связи с ними нет.

Немного о терминологии
До тех пор, пока первичная связь между конструктором и прототипом не разорвана, мы можем наблюдать следующую картину:

make_me=function (_name) {
alert("меня запустили" );
this .name=_name;
this .show_name=function () {alert(this .name);}
}

Make_me.prototype.set_name=function (_name) {this .name=_name;}
child=new make_me("Вася" );

Alert(typeof make_me.prototype); //object - у функции есть свойство prototype
alert(typeof child.prototype); //undefined - у созданного объекта НЕТ свойства prototype
alert(child.constructor.prototype === make_me.prototype); //true - зато у объекта есть свойство constructor, которое указывает на функцию-конструктор make_me, у которой, в свою очередь, есть свойство prototype


* This source code was highlighted with Source Code Highlighter .

Как я заметил после чтения многочисленных форумов на эту тему, основные проблемы возникают у людей, когда они путают свойство prototype у функции и скрытое свойство [] у объекта, созданного с помощью этой функции.
Оба этих свойства являются ссылкой на один и тот же объект (до тех пор, пока первичная связь прототипа с конструктором не нарушена), но это тем не менее разные свойства, с разными именами, одно из них доступно для программиста, а другое нет.

Необходимо всегда четко понимать, что если речь идет о прототипе конструктора - то это всегда свойство prototype, а если о прототипе созданного объекта - то это скрытое свойство [].

Наследование

Теперь мы знаем, что у каждого объекта есть скрытая ссылка на прототип, а каждый прототип - это обычный объект.
Наиболее чуткие читатели уже уловили запах рекурсии:)
Действительно, т.к. прототип - это обычный объект, то и он в свою очередь имеет ссылку на свой прототип, и так далее. Таким образом реализуется иерархия прототипов.
bird=function () {} //Это конструктор птички
bird.prototype.cry=function (){alert("Кри!" );} //Птичка умеет кричать
bird.prototype.fly=function (){alert("Я лечу!" );} //и летать

Duck=function () {}
duck.prototype=new bird();
duck.prototype.cry=function (){alert("Кря-кря!" );} //Утка кричит по другому
duck.prototype.constructor=duck; //Принудительно устанавливаем свойство prototype.constructor в duck, т.к. иначе оно будет ссылаться на bird

Billy = new duck(); //Билли - это наша утка
billy.fly(); //Я лечу! - Билли может летать, потому что он птица
billy.cry(); //Кря-кря! - Билли кричит кря-кря, потому что он утка


* This source code was highlighted with Source Code Highlighter .

Так можно реализовывать иерархию любого уровня вложенности.

Задача на звездочку

Теперь, раз уж мы столько знаем обо всем этом, давайте попробуем разобраться, сколько всего происходит в этих трех строчках
make_me=function () {}
child=new make_me();
alert(child.toString()); //выводит

* This source code was highlighted with Source Code Highlighter .

В первой строке мы создаем новую функцию и переменную make_me, которая указывает на эту функцию. При этом создается прототип функции, make_me.prototype, в котором содержится свойство constructor, указывающее на make_me.
Но это далеко не все:)
Т.к. функция make_me - это тоже объект, то он в свою очередь имеет папу и маму, т.е. конструктор и прототип. Его конструктор - это родная функция языка Function(), а прототип - объект, содержащий в себе методы call, apply и т.д. - именно благодаря этому прототипу мы и можем пользоваться этими методами в любой функции. Таким образом, у функции make_me появляется свойство [], указывающее на Function.prototype.

В свою очередь, прототип конструктора Function - тоже объект, конструктором которого является (сюрприз!) Object (т.е. Function.prototype.[].constructor===Object), а прототипом - объект, содержащий стандартные свойства и методы объекта, такие как toString, hasOwnProperty и другие (другими словами - Function.prototype.[]["hasOwnProperty"] - это как раз тот самый метод, которым мы можем пользоваться во всех производных объектах - причем это именно собственной метод данного объекта, а не наследованный). Вот таким вот интересным образом мы обнаруживаем, что все виды объектов являются производными от Object.

Можем ли мы продолжить дальше? Оказывается, нет. Object.prototype именно потому и содержит базовые свойства объекта, что не имеет собственного прототипа. Object.prototype.[]=null; В этом месте путешествие по цепочке прототипов в поиске свойства или метода прекращается.

Еще один интересный факт - конструктором Object является Function. Т.е. Object.[].constructor===Function.
Налицо еще одна циклическая ссылка - конструктор Object это Function, а конструктор Function.prototype - это Object.

Вернемся к нашему примеру. Как создается функция мы уже поняли, теперь перейдем ко второй строке. Там мы создаем объект child, конструктором которого является функция make_me, а прототипом - make_me.prototype.

Ну и в третей строчке мы видим, как интепретатор поднимается по цепочке, от child к child.[] (он же make_me.prototype), затем к child.[].[] (он же Object.prototype), и уже там находит метод toString, который и запускает на выполнение.

Примеси

Может показаться, что наследование через прототипы - единственный способ, возможный в JavaScript. Это не так.
Мы имеем дело с очень гибким языком, который предоставляет не столько правила, сколько возможности.

Например, при желании мы можем вообще не использовать прототипы, а программировать с помощью концепции примесей. Для этого нам пригодятся наши старые добрые друзья - конструкторы.

//Это конструктор человека
man=function () {
this .live=function (){alert("Я живу" );} //Человек умеет жить
this .walk=function (){alert("Я иду" );} //Человек умеет ходить
}

//Это конструктор поэта
poet=function (){
this .kill=function (){alert("Поэт убил человека" );} //Поэт может убить человека
this .live=function (){alert("Я мертв" );} //От этого человек умрет
}

Vladimir=new man(); //Владимир - человек
vladimir.live(); //Я живу - он жив
vladimir.walk(); //Я иду - он ходит

Poet.call(vladimir); //Выполняем конструктор poet для объекта vladimir
vladimir.kill(); //Поэт убил человека
vladimir.live(); //Я мертв

//А теперь фокус
man.call(vladimir);
vladimir.live(); //Я живу


* This source code was highlighted with Source Code Highlighter .

Что мы видим в данном примере? Во-первых, это возможность наследования от нескольких объектов, не находящихся в одной иерархии. В примере их 2, но может быть сколько угодно.
Во-вторых, это отсутствие какой-либо иерархии вообще. Переопределение свойств и методов определяется исключительно поряком вызова конструкторов.
В-третьих, это возможность еще более динамически менять объект, причем именно отдельный объект, а не всех потомков, как при изменении прототипа.

Upd: Замыкания и приватные свойства

Чтобы не раздувать эту и без того немаленькую статью, даю ссылку на пост , где про это довольно подробно написано.

Что теперь со всем этим делать

Как я уже говорил выше, и произвольное изменение отдельных объектов, и использование конструкторов, и примеси, и гибкость прототипов - это лишь инструменты, возможности, которые позволяют программисту создать как ужасный, так и прекрасный во всех отношениях код. Важно лишь понимать, какие задачи мы решаем, какими средствами, какие цели достигаем и какую цену платим за это.

Причем вопрос о цене довольно нетривиален, особенно если мы говорим о разработке под браузер Internet Explorer 6 и 7 версий.
1. Память - тут все просто. Во всех браузерах наследование на прототипах отнимает в разы меньше памяти, чем при создании методов через конструкторы. Причем, чем больше методов и свойств у нас есть, тем больше разница. Однако, стоит помнить, что если у нас не тысяча одинаковых объектов а всего лишь один, то расходы памяти в любом случае будут небольшими, т.к. здесь стоит учитывать другие факторы.
2. Процессорное время - здесь основные тонкости связанны именно с браузерами от Microsoft.
С одной стороны, объекты, где методы и свойства создаются через конструктор - могут создаваться в разы (в некоторых случаях в десятки и сотни раз) медленнее, чем через прототип. Чем больше методов - тем медленнее. Так что если у вас в IE замирает на несколько секунд во время инициализации скрипта - есть повод копать в эту сторону.

С другой стороны, собственные методы объекта (созданные через конструктор) могут выполняется немного быстрее, чем прототипные. В случае, если позарез необходимо ускорить именно выполнение какого-то метода в этом браузере, то нужно это учесть. Имейте ввиду, ускоряется именно вызов метода (т.е. поиск его в объекте), а не его выполнение. Так что если сам метод у вас выполняется секунду, то особого увеличения быстродействия вы не заметите.

В других браузерах подобных проблем наблюдается, там время создания объектов и вызова их методов примерно одинаково для обоих подходов.

P.S. Обычно в статьях подобного рода автор предлагает некую обертку, либо пытающуюся реализовать класс-объектное наследование на базе прототипного, либо просто синтаксический сахар для прототипного наследования. Я не делаю этого намеренно, т.к. считаю, что человек, понявший смысл данной статьи, способен сам для себя написать любую обертку, и еще много интересных вещей:)

Теги:

  • ооп
  • наследование
  • javascript
Добавить метки

Объект – это неупорядоченная коллекция свойств. Свойство – это часть объекта имитирующая переменную. Свойство состоит из имени и значения.

В JavaScript есть три категории объектов:

  • Объекты базового типа – это объекты, определённые в спецификации ECMAScript. Например, объекты типа Array , Function , Date или RegExp являются объектами базового типа.
  • Объекты среды выполнения – это объекты, определённые в среде выполнения (такой как браузер). Например, объекты типа HTMLElement , являются объектами среды выполнения.
  • Пользовательские объекты – это любой объект, созданный в результате выполнения программного кода JavaScript.

Создание объекта

Объект можно создать с помощью литерала объекта или оператора new с конструктором.

Литерал объекта – это заключённый в фигурные скобки список из нуля или более свойств (пар имя: значение), разделённых запятыми. Именем свойства может быть любой допустимый идентификатор, строковой литерал (допускается использовать пустую строку) или число. Числовые имена свойств автоматически преобразуются в строки. Значением свойства может быть значение любого типа или выражение (значением свойства в этом случае станет результат вычисления выражения):

// Создание пустого объекта var o = {}; // Создание объекта с тремя свойствами var user = { name: "Homer", "age": 45, 1: true };

Создание объекта с помощью оператора new :

Var o = new Object();

Операции с объектом

Основные операции производимые с объектами – это добавление новых свойств, изменение уже существующих свойств, удаление свойств и обращение к свойствам.

Добавить новое свойство в объект можно присвоив свойству значение. Чтобы присвоить свойству значение, к нему нужно получить доступ. Для доступа к свойству используется один из операторов доступа: . (точка) или (квадратные скобки):

Обращение к свойству и изменение значения осуществляется точно так же (с помощью операторов доступа):

Var o = {x:5}; alert(o.x); // Обращение к свойству alert(o["x"]); // Обращение к свойству o.x = 10; // Изменяем значение

Удаление свойства осуществляется с помощью оператора delete :

Var o = {x:5}; alert("x" in o); // true delete o.x; alert("x" in o); // false

Для перебора свойств объекта используется цикл for-in :

Var obj = {x: 5, y: 10, str: "Hi!"}; for (var prop in obj) { alert(prop); }

Методы объекта

Свойство, значением которого является функция, называется методом . Вызов метода осуществляется точно также, как и вызов обычной функции – с помощью оператора () (оператор вызова):

Var o = { sayHi: function() { alert("Hello!"); } }; o.sayHi(); // "Hello!"

Для доступа к свойствам объекта внутри метода используется ключевое слово this . Оно содержит ссылку на объект, с помощью которого был вызван метод:

Var o = { name: "Homer", sayName: function() { alert(this.name); } }; o.sayName(); // "Homer"

Вместо ключевого слова this можно использовать непосредственно имя объекта, но это не очень удобно, так как, если изменится имя объекта, в методах придётся также изменять имя:

Var o = { name: "Homer", sayName: function() { alert(o.name); } }; o.sayName(); // "Homer"

Rambler (Рамблер, перев. с англ. как странник, бродяга) - поисковая система интернет-холдинга Rambler Media Group.

Поисковик учитывает морфологию русского, украинского и английского языков, а также при поиске проходит по всем формам запросов и выдает результаты по степени соответствия запросу.

Rambler, одна из самых первых поисковых систем на интернет-рынке, сыграл огромную роль в становлении Рунета. С небольшой численностью (не более 5%) поисковик стоит на 3 месте после Яндекса и Google.

Аудитория поиска Рамблер в основе своей представлена людьми, пользующимися системой практически с момента ее появления.

Из преимуществ в Рамблере можно выделить тематический рейтинг сайтов, службу новостей, интернет-мессенджер, сервис онлайн-платежей, бесплатную почту и сервис контекстной рекламы Бегун, и т.д.

Хроника событий

В 1991 году группа ученых, а именно Сергей Лысаков, Юрий Ершов, Дмитрий Крюков, Виктор Воронков и Владимир Самойлов, из Института биохимии и физиологии микроорганизмов РАН взялись за разработку местной сети для обмена научной и технической информации в Пущино. Вскоре сеть была соединена с Москвой, а затем и с Интернетом. Проект быстро заработал и стал активно развиваться.

Официальным годом рождения поисковика считается 1996 год, когда Дмитрий Крюков создал службу поиска под названием Rambler. В 1996 году уже были созданы и работали другие поисковые системы, но они, в отличие от Рамблера, не были популярны.

В 1997 г. Дмитрием Крюковым была введена определенная шкала,классификатор Rambler’s Top100, отвечающий за определение авторитета сайтов в зависимости от частоты их посещения.

В 1999 г. должность директора по разработке и исследованиям, а затем и место исполнительного директора занял Игорь Ашманов, который ушел из компании в 2001году. Свою работу в Рамблере он описал в книге «Жизнь внутри пузыря», где детально описал деятельность компании за 1999-2001гг., а также то, почему Рамблер потерял свое 1 место на отечественном интернет-рынке.

В 2004 г. Rambler’s Top 100 выдали сертификат качества ISO 9001.

В 2007 г. пост генерального директора занял Марк Опзумер. В 2009 г. на основе технологии eXtended AGgregator был добавлен вертикальный поиск. 31 декабря 2009 года в Rambler уволился весь топ-менеджмент вместе с генеральным директором Марком Опзумером и в этом же году поисковик получил «Премию Рунета» в номинации «Культура и массовые коммуникации».

С апреля 2009г. Ольга Турищева, работавшая в компании «Вымпел» директором по развитию венчурного бизнеса, руководит Рамблером.

В конце июня 2011 г. Рамблер перешел на поисковую технологию Яндекса. Наряду с достоинствами у поисковика есть и недостатки, особенно по сравнению с Яндексом или Google. В поиске Rambler редко обновляются алгоритмы, практически нет фильтров для контроля качества интернет-источников по низкочастотным или среднечастотным запросам, что увеличивает количество спамных сайтов, низко котируется и алгоритм определения релевантности сайтов. В связи с этим доля Рамблера среди поисковых систем уменьшилась с 20 до 5%.

Что Рамблер может предложить?

Рамблер предоставляет не только многочисленные проекты развлекательного характера, но и следующие разделы:

  1. «Карты»- содержит подробные карты крупных городов. Пользователи могут узнать интересующие их адреса, проложить любые маршруты и быть в курсе дорожных пробок.
  2. В «Прайс.ру» можно найти любые каталоги товаров, информацию о скидках, обзоры новинок, планируемые мероприятия и т.д.
  3. «Финансы» всегда предоставят необходимые сведения о котировках валют, ситуации на современном рынке, курсах акций и т.д.
  4. В «Ferra.ru» можно найти обзоры новинок цифровой техники: фотоаппаратов, телефонов, компьютеров и т.д.

). Rambler в 2011 году окончательно стал обычным рядовым порталом (правда с многомиллионной аудиторией) и поиск у них теперь осуществляется с помощью когда-то заклятого «друга» Яндекса. Можете сами убедиться в идентичности их поисковых выдач по одним и тем же запросам.

Но тем не менее, я считаю обоснованным решение написать небольшой очерк о становлении, развитии и медленной смерти этой самой первой в рунете поисковой системы (Рамблер родился на год раньше Яндекса и Гугла, когда количество сайтов в русскоязычном сегменте сети измерялось всего лишь сотнями).

Поисковая система Рамблер уже таковой не является

Летом 2011 года между Яндексом и нашим героем был заключен договор, по которому поиск на этом мега-портале будет отныне вестись средствами зеркала рунета. Чуть ранее рассматривался вариант использования поиска Гугла, но соотечественник смог сделать более выгодное предложение (ему нельзя было проигрывать после утери партнерства с ).

Важным аспектом договора было разделение зон влияния между системами и Бегун. Изначально в рунете существовали три основных игрока на рынке контекста: Директ, Гугл Адвордс и Бегун. Каждая из них основную долю прибыли снимала именно в выдачах своих поисковиков.

Бегуну и так было не сладко, ибо его донор Rambler терял свою долю на рынке поиска с заметной регулярность. Хотя деваться ему особо было некуда, поскольку контрольный пакет Бегуна контекста принадлежал Рамблеру.

Ну, а тут, после прихода Яндекса, ему пришлось еще туже затянуть поясок — его блоки контекстной рекламы вынесли на периферию поисковой выдачи Рамблера (показываются справа), оставив самые доходные места конкуренту в лице Директа:

Конечно же, кроме поисковой выдачи Рамблера контекст от Бегуна показывается еще на ряде крупных порталов, а так же в сети партнеров, но его доля на рынке неуклонно падает.

Да и качество рекламодателей в этой системе оставляет желать лучшего, поэтому не многие вебмастера стремятся сотрудничать с Бегуном (заработки просто смешные). Обычно к нему обращаются в том случае, если сайту отказали и в (самый доходный, на мой взгляд, вариант, особенно при работе через Профит) и в .

Владельцы Бегуна рассчитывали, что с приходом Яндекса доля Рамблера в поисковом пироге рунета несколько повысится, что позволит им увеличить доходы, но этого не произошло и сейчас она составляет мизерную величину (чуть больше процента):

Одновременно с решением о прекращении работы над поисковым движком, владельцы Rambler решили провести ребрендинг . Во-первых, было изменено написание названия — латинские буквы были заменены русскими, что, собственно, нужно было сделать уже давно. Во-вторых, изменился и логотип компании, хотя для такого известного бренда логотип уже не имеет решающего значения:

Постепенно все сервисы, входящие в состав этого мега-портала, будут изменять свой внешний вид, чтобы соответствовать новому имиджу. Поможет ли это Рамблеру вылезти из той пропасти, в которую он себя сам загнал? Время покажет.

В состав этого портала входит много известных сервисов (вы там даже найдете браузер Нихром, и многое другое), которые развивались вместе с поисковой системой или же были куплены владельцами портала со временем (более подробное описание и назначение сервисов вы можете посмотреть в хелпе):

Как мне кажется, Рамблером сейчас пользуются в основном интернетчики со стажем, которые подсели на него и его сервисы (почту, карты, прайс.ру, ферра.ру, афишу и др.) в то время, когда он еще не свалился в «крутое пике».

Rambler скорее жив, чем мертв (надолго ли)

Примерно год назад читал пост одного блогера, который по совместительству является школьным учителем. Он в начале учебного года опрашивал школьников на предмет того, какой поисковой системой они пользуются. Что примечательно, никто из них не назвал Rambler, а многие и вообще о нем никогда не слышали. Отсюда можно сделать вывод, что для этого поисковика практически все уже находится в прошлом.

Единственным сервисом, который появился практически одновременно с поисковой системой и просуществовал до сих пор без особых изменений, является . Я о нем уже неоднократно писал, в том числе и в статье про . Фактически это сервис, предоставляющий бесплатный счетчик посещаемости и выстраивающий на основании его показаний Топ сайтов рунета, подразделяя их на соответствующие рубрики.

Внешний вид Rambler Top 100 не был еще подвергнут ребрендингу и выглядит он, по большому счету, не айс. Кроме того, несколько бросается в глаза способ монетизации, когда сверху и сбоку каталога выводятся рекламные блоки сильно смахивающие на . Ничего против них не имею, но у многих складывается впечатление несерьезности проекта (следующим шагом могут быть тизеры с содержанием для взрослых):

Хотя внизу все же имеются блоки контекстной рекламы, но опять от бывшего конкурента в лице Яндекса. Изначально рейтинг Топ 100 задумывался для упрощения жизни рекламодателей — выбрал рубрику и вот они лидеры в самом верху списка. Не знаю, насколько это актуально сейчас, но все свои сайты, я лично, в обязательном порядке добавляю в этот сервис Рамблера. Почему?

Дело в том, что из-за своего чудовищного возраста (был запущен весной 1997 года) сайт этого сервиса имеет огромный траст, а ссылки с его страниц не закрываются от индексации их поисковыми системами. Догадываетесь к чему я веду? Какой бы не был сервис Rambler Top 100 тормознутым и малоинформативным, участвовать в нем будет полезно для любого проекта.

Есть такой мощный буржуйский сервис по анализу сайтов и их ссылочной массы, как Ahrefs (Миша Шакин сделал его видеобзор). Так вот, там можно увидеть все обратные ссылки ведущие на ваш ресурс. Причем их можно будет отсортировать по внутреннему рейтингу этого сервиса (AhrefsRank), который косвенно отображает качество данной обратной ссылки.

В общем-то, сервис полезный и, возможно, после ребрендинга он будет выглядеть по человечески (ну, и его счетчик перестанет периодически тупить). Если говорить о Рамблере в целом, то упадок наметился уже довольно давно и решение о смене движка поиска было правильным, ибо их собственный поиск давно отстал от времени.

Причин упадка и снижения качества поиска в Rambler, наверное, было достаточно много, но, как видится мне, развал начался еще лет десять назад. Об этом пишет в своей книге «Жизнь внутри пузыря » великий и ужасный Игорь Ашманов, стоявший когда-то у руля этой поисковой системы.

Когда я писал статьи про историю создания Yandex и историю создания и особенности продвижения в Гугле, то упоминал один общий момент, который, по моему мнению, стал решающим в том, что оба этих поисковика процветают и успешно развиваются до сих пор. В обоих этих компаниях у руля остались те же самые люди (Брин и Пейдж, а так же Волож и Сегалович), которые и стояли у ее истоков.

Причем, эти люди являлись в обоих случаях энтузиастами своего дела, для которых доходы были вторичны, а первично было развитие и движение вперед их детищ. Именно этого я и не обнаружил в истории развития Рамблера. Как писал Игорь Ашманов, раскол произошел примерно десять лет назад и те, кто работал над поисковой системой изначально, были выкинуты из обоймы. Ну и, как бы, результат не замедлил сказаться.

Печальная история поисковика Рамблер

Вообще, история создания компании Rambler довольно интересна. Начиналась она в одном из подмосковных научных городков Пущино. Если вы помните , то знаете о том, что эта система была сначала ориентирована на военные нужды штатов, а потом довольно долго служила средством коммуникации для научных сообществ Америки (институтов).

Наукоград Пущино в начале девяностых годов прошлого века был примечателен тем, что стал первым городом Подмосковья, в котором появилась выделенная линия подключенная через Москву к интернету. Именно интерес обмена данными по последним исследованиям в научном мире и подхлестнули активистов чуть ли не своими силами проложить кабель до Москвы.

В 1991 году интернет только-только начал свое победное шествие по планете и практически еще не существовало (только в 1989 году была придумана всемирная паутина WWW и были , служащего для создания современных сайтов). Энтузиасты из Пущино сами поднимали почтовые и Ftp сервера для своих нужд и даже в рамках всего интернета они были значимой единицей.

Ну, и логическим завершением полной интернетизации научного сообщества города своими собственными силами стало написание движка поисковой системы . За несколько месяцев с этой задачей успешно справился программист Дмитрий Крюков. Осенью 1996 года был приобретен домен rambler.ru, а 8 октября сайт с поисковиком стал доступен пользователям интернета.

Rambler означает в переводе с англицкого — бродяга. Особых конкурентов в рунете у него не было и поэтому до момента появления на горизонте Яндекса (осень 1997 года) он стал единоличным и абсолютным лидером поиска. Правда в то время сайтов в рунете было всего лишь в районе сотни.

Через полгода (весна 1997 года) появился успешно существующий и по сей день рейтинг Рамблер топ 100, о котором мы уже говорили чуть выше по тексту.

Дальнейшая история развития поисковой системы не столь однозначна и прямолинейна, как мы это могли видеть у Яндекса и Гугла. Вдаваться в подробности смены руководства и структурных изменений в компании мне не хочется, но сейчас в ней уже не работают те, кто был у ее истоков. Сам создатель Рамблера, Дмитрий Крюков, умер в 2009 году от инсульта. Игорь Ашманов создал свой собственный бренд по другую сторону баррикад — перешел на сторону сеошников ().

Хотя до определенного момента (2006—2007 годы) Rambler был на слуху и казалось, что перспективы его дальнейшего развития были очень даже благоприятными. Были открыты или приобретены новые сервисы, росла посещаемость и прибыль компании.

Например, в 2006 году Рамблер находился на втором месте рынка поиска рунета с очень даже весомым процентом:

Он даже серьезно опережал Гугл, что сейчас кажется несколько фантастичным. Но постепенно сказывались огрехи руководства и нежелание серьезно работать над движком поиска. Уже в последующие несколько лет (2007—2009) доля поиска Rambler снизилась в несколько раз:

Когда казалось, что хуже уже и некуда (около 5% от общего рынка), он доказал, что можно, и его доля снизилась еще в несколько раз за последующие годы (2009—2011):

Ну, а сейчас, когда на rambler.ru поиск осуществляется силами движка Яндекса (у меня, кстати говоря, ситуация в точности такая же), объективных причин падения его популярности из-за плохого качества поиска нет. Возможно, что доля рынка, равная примерно одному проценту, и есть текущая планка для этой некогда популярной поисковой системы, а теперь мега-портала.

В общем-то, не так уж и плохо, во всяком случае я готов поменяться с Рамблером местами, но боюсь, что его владельцы будут против. Говорить теперь об особенностях под Rambler не имеет смысла в силу использования им чужого движка.

Удачи вам! До скорых встреч на страницах блога сайт

посмотреть еще ролики можно перейдя на
");">

Вам может быть интересно

Статистика поисковых запросов Яндекса, Google и Рамблера, как и зачем работать с Вордстатом
Как добавить сайт в аддурилки (add url) Яндекса, Google и других поисковиков, регистрация в панелях для вебмастеров и каталогах
Расшифровка и разъяснение Seo сокращений, терминов и жаргонизмов
СЕО терминология, сокращения и жаргон
Релевантность и ранжирование - что это такое и какие факторы влияют на положение сайтов в выдаче Яндекса и Гугла
Апдейты Яндекса - какие бывают, как отслеживать ап Тиц, изменения поисковой выдачи и все другие обновления

Здравствуйте, уважаемые читатели блога сайт. В свое время я написал ряд обзоров со своими личными наработками и впечатлениями от работы с популярными почтовыми сервисами, а точнее с их веб-интерфейсами:

  1. — использую для основных почтовых ящиков, ибо при подключении двойной верификации этот сервис априори является самым надежным.
  2. — все замечательно, а в особенности порадовала бесплатная и функциональная почта для домена.
  3. — ну, как бы ничего выдающегося на фоне предыдущих монстров, но тем не менее в новом интерфейсе этого почтового сервиса все довольно хорошо продумано и придраться не к чему.
  4. бесплатная почта с самым большим объемом ящика в 1 Тбайт. В остальном сервис ничем особым не выделяется среди конкурентов.

Все три вышеозначенных сервиса обладают высокой стабильностью и в них, что немаловажно, присутствуют спаморезки. Где-то они работают лучше, где-то хуже, но в общем и целом они свою работу выполняют.

Наш же сегодняшний герой — почта Рамблера . Появилась она в самом начале этого тысячелетия и в свое время пользовалась огромной популярность, на которой, скорее всего, сервис и выезжает до сих пор. Как вы помните, была заменена не так давно на движок от Яндекса, и Rambler, по большому счету, стал большим порталом с рядом популярных сервисов (включая почту, рейтинг и многое другое). Однако, подход к этому делу у них явно стал меняться, и не в лучшую сторону. Но обо все по порядку...

Вход, регистрация и создание ящика в почте Рамблера

Лично я веб-интерфейсом Рамблер-почты не пользовался довольно давно, ибо у меня была настроена сборка почты с имеющихся там почтовых ящиков на основной, корреспонденцию с которого я в свою очередь читаю в клиенте из состава . Однако, наткнувшись на ряд негативных отзывов о работе этого сервиса, я решился опробовать на себе их новый (для меня) интерфейс, который появился в 2012 году. Собственно, эта статья и обязана своему появлению тем впечатлениям, что были получены.

Если же хотите не войти, а завести новый ящик, то на той же странице вы найдете зеленую кнопочку «Завести почту» , которая поможет вам в этом противоестественном желании. Как вы могли видеть из предыдущего скриншота, существует несколько вариантов окончания вашего будущего почтового ящика (окромя стандартного @rambler.ru). Это, кстати, может помочь, если выбранное вами название уже занято:

На следующем шаге вас стандартно попросят придумать пароль, выбрать контрольный вопрос и дать на него ответ (эта информация может понадобиться вам при восстановление доступа к вашему почтовому ящика при взломе или же простой утери пароля). Собственно, все. Вас поздравят с ценным приобретением и предложат осмотреть свои владения.

По аналогии с или , ваш логин и пароль к почтовому ящику и для других сервисов, принадлежащих корпорации Rambler. Тут же вы можете установить свою фотографию или аватар, которые будут видны получателям ваших писем.

Стоит отметить, что в отличии от упомянутых выше конкурентов в Рамблер-почте не осуществляется привязка к номеру мобильного телефона , что снижает безопасность работы с ящиком, как мне кажется. Как вы понимаете, аргумент, что у Вас в ящике нечего ценного нет, не особо-то и катит, ибо практически ломают на потоке, а не по заказу. Охотятся не только за деньгами, но и за аккаунтами соцсетей и прочими вещами, которые можно потом продать оптом спаммерам или другим каким-то «редискам».

Внешний вид веб-интерфейса похож на какой-нибудь очень простенький почтовый клиент (программу, установленную у вас на компьютере, которая собирает корреспонденцию со всех ваших ящиков). Кстати, разработчики именно это и предлагают вам реализовать, нажав на расположенную в левой колонке ссылку «Добавить другие ящики». Т.е. вам предлагают настроить сбор почты со всех других имеющихся у вас почтовых ящиков (в том числе и с других сервисов) для просмотра корреспонденции именно в детище рамблера.

Довольно-таки смелое предложение в свете того, что основная часть критики на Rambler-почту связана с плохой работой спаморезки, а это, на мой взгляд, наравне с удобством интерфейса и функционалом (фильтры, настройки и т.п.) является основополагающей вещью при выборе основного ящика, где будет собираться вся корреспонденция. Лично мне пока импонирует спаморезка Гмайла, да и функционал его находится на более высоком уровне. Но это все же дело вкуса.

В пользу данного интерфейса может говорить его простота и очевидность. В левом нижнем углу вы найдете парочку кнопок с горизонтальными и вертикальными полосками, которые позволяют вам переключаться из двухколоночного режима просмотра почты в трехколоночный, когда список писем остается открытым, а содержимое интересующего вас письма открывается правее в отдельной обрасти.

Там же, но чуть правее вы найдете кнопку для перехода к настройкам вашего почтового ящика в Rambler-почте (по ним пробежимся чуть позже).

Как можно проверить входящие в Rambler-почте

Вариантов традиционно несколько.

Веб-интерфейс (ваша страница) в Rambler Mail

Вверху расположены самые необходимые кнопки для управления и сортировки входящей корреспонденции:


Также важным является и возможность пометки отдельных писем. В Рамблер-почте это реализовано, хотя и довольно-таки простенько (при малых объемах переписки вполне сойдет). Важные письма вы можете помечать звездочками, контур которых будет прорисован напротив каждого письма справа, а снимать метку «Непрочитанное» можно с помощью контура кружочка расположенного слева. Для групповой пометки можно поставить напротив нужных галочки и воспользоваться выпадающим меню кнопки «Еще», расположенной выше.

Ну, а чтобы потом настроить подсветку фоном только важных или непрочитанных писем и нужно будет выбрать подходящий вариант из выпадающего списка показанного на скриншоте. Для поиска по всем письмам можно использовать расположенную вверху поисковую строку. На мой взгляд, можно было бы чуток повысить функциональность работы с корреспонденцией, но зато этот вариант уж точно из разряда «проще некуда».

Настройки электронной почты Рамблера

Давайте теперь пробежимся по настройкам почты от Rambler , которые прячутся за кнопкой с шестеренкой, расположенной внизу левой колонки.

Собственно, их не так уж и много. С одной стороны, это не отпугнет неискушенного пользователя, но вот более-менее привыкшего к комфорту и удобству юзера они могут несколько разочаровать. Тем не менее, что есть, то есть.

На первой вкладке настроек вы сможете задать имя отправителя (а при желании указать другой Емайл, на который будут приходить ответы), добавить подпись, которая будет добавляться внизу всех отправляемых вами писем, а также сможете изменить обложку страниц с вашей почтой (по умолчанию используется синяя текстура, но вы можете ее заменить на один из десятка вариантов фона). Ну, и еще вы сможете увидеть сколько свободного места осталось в вашем бесплатном почтовом ящике, которого изначально дается не так уж и много на фоне конкурентов (всего то 2 Гига).

На следующей вкладке страницы настроек Rambler Mail вы сможете добавить новые папки, если таковая необходимость возникнет. На вкладке «Другие ящики» вы сможете при желании настроить сбор почты со всех имеющихся у вас почтовых ящиков в этом или каких-либо других сервисах. Достаточно будет только указать логин и пароль от этих самых ящиков. Если сервис, откуда должна собираться корреспонденция будет не стандартным (для них уже известны адреса и порты сервера РОР3), то придется указать еще и эти данные.

В данном сервисе электронной почты, само собой, имеются фильтры . Живут они на соответствующей вкладке настроек. Они позволяют настроить обработку входящей корреспонденции с помощью проверки всех писем на соответствие заданным условиям, а в случае их удовлетворения — производить над ними одно из следующих действий:

  1. помечать письма прочитанными;
  2. помечать важными;
  3. удалять письма;
  4. перемещать в указанную папку

Есть несколько вариантов для задания условий и выполняемых при их удовлетворении действий (выбираются из выпадающих списков показанных на скриншоте). Условий, кстати, можно задать несколько с помощью кнопочки с плюсом. В общем, все обычно и довольно-таки просто, если не сказать примитивно. Но зато нет ничего сложного и доступно совершенно неподготовленному пользователю (в отличии, например, от тех же фильтров и ярлыков Гмайла).

Вкладка автоответчик, на мой взгляд, представляет мало пользы, разве что только на время отпуска настроить автоответы и сроки, когда вы сможете ответить на входящую корреспонденцию. А вот вкладка «Пересылка писем» вполне может пригодиться. Как я уже упоминал, многие жалуются на спаморезку Рамблера, и если она действительно работает плохо, то имеет смысл настроить пересылку всех входящих писем на другой сервис, где спам отсеивается на раз-два (тот же Гмайл или Яндекс).

Для настройки пересылки достаточно будет лишь переставить галочку в область «Включена», указать почтовый ящик адресата в поле «Кому» и решить, будете ли вы сохранять на сервисе Rambler копии пересылаемых писем.

Ну, а на вкладке «Почтовые программы» вы сможете узнать данные для настройки приема и отправки почты через данный почтовый ящик с помощью программы-клиента, установленной у вас на компьютере (можно использовать и SMTP и IMAP).

Да, еще вкладка «звуки», где можно активировать отключенные по умолчанию звуки, которые будут проигрываться при приходе нового письма в папку Входящие, а также при отправке корреспонденции или при возникновении сбоя.

Рамблер в сравнении с конкурентами

Если все описанное выше (включая спаморезку) будет работать в этом почтовом сервисе идеально, то его вполне можно рекомендовать нетребовательным пользователям сети, которые хотят получить максимально простой и, что не мало важно, .

Однако, серьезной конкуренции Гмайлу, Яндекс Почте и даже Майл.ру этот сервис оказать не может. Недостаточен функционал, не проработан вопрос с безопасностью, да и настроек для серьезной работы с большим объемом корреспонденции явно не достаточно.

Если же еще брать в расчет и массу отрицательных отзывов пользователей в сети (тут опять же нужно подходить выборочно, ибо когда все устраивает, то отзывы обычно просто не пишут), то перспективы у Rambler почты в борьбе с конкурентами за рынок довольно-таки призрачны. Их основной задачей сейчас, как мне кажется, будет удержание уже существующих клиентов. ИМХО.

Удачи вам! До скорых встреч на страницах блога сайт

посмотреть еще ролики можно перейдя на
");">

Вам может быть интересно

Yahoo Mail - обновленная бесплатная почта Почта Outlook.com (новый Hotmail)
Временная почта и одноразовые Email-адреса без регистрации, а также бесплатные анонимные почтовые ящики ProtonMail - электронная почта с повышенной безопасностью и интерфейсом на русском языке
Создать электронную почту - что это такое, как и где пройти регистрацию и какой выбрать емайл (почтовый ящик)
Емайл почта - регистрация, выбор Эмейл-адреса, как войти в свой ящик и как просмотреть входящие письма на вашей странице



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: