Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   ООП в прототипном стиле (https://javascript.ru/forum/dom-window/57194-oop-v-prototipnom-stile.html)

Moloch 23.07.2015 17:30

ООП в прототипном стиле
 
Здравствуйте, изучаю ООП в прототипном стиле. Написал элементранейший скрипт для самообучения http://plnkr.co/edit/oPCRbIVHJ9sMedoH6x79?p=preview. Вопрос такой почему если в 14-й строке писать render.apply(this, arguments[5]); то получаю ошибку Function.prototype.apply: Arguments list has wrong type? а если писать вот так писать render.call(this, arguments[5]) то все ок.

tysonfury2015 23.07.2015 17:45

Потому что функция apply принимает в качестве 2-го аргумента массив, либо объект массивоподобного типа, как в твоем случае, а ты подал ей не-массив. А прототипное ооп тут не при чем.

tysonfury2015 23.07.2015 17:47

можешь рассматривать call как сахар для apply
call(object, foo, bar, baz) === apply(object, [foo, bar, baz])

Safort 23.07.2015 17:49

Moloch,
Цитата:

Вопрос такой почему если в 14-й строке писать render.apply(this, arguments[5]); то получаю ошибку Function.prototype.apply: Arguments list has wrong type? а если писать вот так писать render.call(this, arguments[5]) то все ок.
Потому, что метод apply вторым аргументом ожидает массив.

Moloch 23.07.2015 18:46

спасибо за ответы, разобрался


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