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

systemiv 04.09.2011 23:07

b.prototype = new a();

kadabrik 04.09.2011 23:31

Цитата:

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

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

yambbkru 05.09.2011 09:02

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

kadabrik 05.09.2011 09: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 10:26

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

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

yambbkru 08.09.2011 14:06

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


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