Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с созданием нового объекта (https://javascript.ru/forum/misc/20897-pomogite-s-sozdaniem-novogo-obekta.html)

systemiv 05.09.2011 00:07

b.prototype = new a();

kadabrik 05.09.2011 00:31

Цитата:

Сообщение от systemiv (Сообщение 124831)
b.prototype = new a();

Не стоит злоупотреблять таким способом наследования. Тут создается совершенно лишний объект "a".

yambbkru 05.09.2011 10:02

А зачем там new? а() и b() - это функции, которые возвращают объекты. Это не конструкторы, я так понимаю. Объект создается внутри этих функций. Мне действительно не нужен лишний объект а!!! Я пока вижу только один способ наследования: копирование всех свойств из а() в b(). Но мне это не совсем нравится, поскольку лишнее время затрачивается на это копирование. Хотелось бы через прототип.

kadabrik 05.09.2011 10:59

Цитата:

Сообщение от yambbkru (Сообщение 124822)
А можно еще спросить? Вот есть такие 2 функции:
function a() {
  var t = {
    c : "1"
  }
  return t
}

function b() {
  var t = {
    d : "2"
  }
  return t
}

var A = a();
var B = b();
alert(A.c + B.d)

В результате выдает сообщение "12". Как мне сделать, что бы все объекты, создаваемые функцией b() имели своим прототипом объект, создаваемый функцией а()?

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

Цитата:

Сообщение от yambbkru (Сообщение 124874)
А зачем там new? а() и b() - это функции, которые возвращают объекты. Это не конструкторы, я так понимаю. Объект создается внутри этих функций. Мне действительно не нужен лишний объект а!!! Я пока вижу только один способ наследования: копирование всех свойств из а() в b(). Но мне это не совсем нравится, поскольку лишнее время затрачивается на это копирование. Хотелось бы через прототип.

Я уже подсказывал ссылкой на статью в этой ветке один из способов наследования, и оно реализуется через прототип.

Sweet 05.09.2011 11:26

Хочешь через объект-прототип? Рекомендую самую обычную реализацию:
function B(){
  this.d = 2;
};
B.prototype.c = 1;

var b = new B;
alert( b.c + b.d );

yambbkru 08.09.2011 15:06

Спасибо, но мне не нужно реализовывать выдуманную мной задачу для примера другими способами! Мне нужен совет по поводу именно такой моей реализации. Пожалуйста, если кто может, помогите. Нужно те две функции как-то связать через прототип.


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