Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Улучшить код (https://javascript.ru/forum/dom-window/52022-uluchshit-kod.html)

ruslan_mart 02.12.2014 15:03

danik.js, ну если он же и делает сам это всё для какого-то сайта, на кой ему нужно будет вызывать $ через call/apply?

В принципе, достаточно сделать:

if('$' in this) return new $(.....);

OlegALL 02.12.2014 15:07

Это учебное задание, которое специально составлено на прокачку скиллов

danik.js 02.12.2014 15:09

Цитата:

Сообщение от Ruslan_xDD
danik.js, ну если он же и делает сам это всё для какого-то сайта, на кой ему нужно будет вызывать $ через call/apply?

И че, значит надо делать через жопу?

ruslan_mart 02.12.2014 15:16

danik.js, нет. Я не считаю, что '$' in this или this.$ - это через задницу. В jQuery вроде как раз так и написано.

Вот у тебя когда-нибудь была необходимость вызывать jQuery через call? Зачем её вообще через call кому-то понадобится вызывать?

krutoy 02.12.2014 15:28

Цитата:

Сообщение от Ruslan_xDD
что '$' in this или this.$ - это через задницу

Это именно через задницу. Зачем вообще вызывать ф-цию дважды только для того, чтобы создать объект? Это все равно, что писать var a = a = 1, это тупость по-любому. Про call/applay правильно сказали, а не используют, просто потому что четкого понимания работы этих ф-ций ни у кого нет. Вызовешь в контексте экземпляра, и перезапишешь свойства, и вообще, хз что может быть.

danik.js 02.12.2014 15:34

Цитата:

Сообщение от Ruslan_xDD
В jQuery вроде как раз так и написано.

Фигня. Смотрим: https://github.com/jquery/jquery/blo...rc/core.js#L23

var
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
// Need init if jQuery is called (just allow error to be thrown if not included)
return new jQuery.fn.init( selector, context );
};

danik.js 02.12.2014 15:35

Цитата:

Сообщение от krutoy
Зачем вообще вызывать ф-цию дважды только для того, чтобы создать объект?

Расскажи это разработчикам jQuery, а то они не в курсе.

krutoy 02.12.2014 15:36

Цитата:

Сообщение от danik.js
Расскажи это разработчикам jQuery, а то они не в курсе.

А мне плевать на разработчиков, хоть жеквери, хоть х*я, я просто констатирую факт.

Erolast 02.12.2014 15:40

Правильно делаешь, ты ведь умнее разработчиков jQuery.

krutoy 02.12.2014 15:43

Цитата:

Сообщение от danik.js
return new jQuery.fn.init( selector, context );

Это, кстати, говнокод, по большому счету. Есть конвенция, употреблять оператор new только для создания экземпляра класса, а ф-ция, должна быть с большой буквы. Грязный хак мартышки, которая не знает как_сделать_это_правильно


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