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

OlegALL 01.12.2014 10:45

Цитата:

Сообщение от nerv_ (Сообщение 343707)
безобразие :D


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

а еще не понятно, зачем такое извращение
$.prototype.html = function(){
    var clone = new $('_');
    clone.tags = this.tags;
    clone.toString = function() {
        return this.tags[0].innerHTML;
    };
    return clone;
}

если достаточно
// getter
$.prototype.html = function(){
    return this.tags[0].innerHTML;
}

http://api.jquery.com/html/
http://code.jquery.com/jquery-2.1.1.js

потому что условие сделать так:
$('div').html().addClass('class2').html()

Я прошу ответить точно на мои вопросы либо дать напутствия, остальные вопросы решены

danik.js 01.12.2014 15:52

Цитата:

Сообщение от nerv_
а еще не понятно, зачем такое извращение

Это мой код )

Ему нужно было чтобы html() не прерывал цепочку вызовов (только не понимаю какой тогда смысл в его вызове ). Про toString ему подсказал его "специалист".

Написал наскоряк. По идее надо создавать класс, наследующийся от $, с перекрытым toString. Причем в каждом вызове любого метода должен возвращаться новый инстанс, чтоб не тянулся один по цепочке.

danik.js 01.12.2014 15:53

Цитата:

Сообщение от OlegALL
потому что условие сделать так:
$('div').html().addClass('class2').html()

А нахуя вызывать html() , не используя результат? Твой спец - ебанат. Так ему и передай.

nerv_ 01.12.2014 15:58

Цитата:

Сообщение от danik.js
Ему нужно было чтобы html() не прерывал цепочку вызовов

я про это :)

OlegALL 01.12.2014 16:04

почему
if (!(this instanceof $))

лучше, чем
if (this.$)

?

Мне больше ничего не надо

nerv_ 01.12.2014 16:11

OlegALL, потому, что конструктор может быть вызван без new. А твоя проверка вообще не понятно что делает :)

danik.js 01.12.2014 16:50

Цитата:

Сообщение от OlegALL
почему лучше, чем

Первая проверка проверяет, что конструктор вызван без слова new, и тогда форсируется вызов через new, дабы создать все-таки объект.

Вторая проверяет что конструктор вызван в контексте объекта, у которого есть свойство $. Ну типа предполагается что был вызов Constructor(), и контекст тогда window, и проверяется window.$.


Стоит сделать Constructor.call({$:1}) и твоя глюкавая проверка не сработает :D

OlegALL 01.12.2014 22:34

Спасибо. но я так и не понял, чем же второй вариант лучше. Какая разница, как проверять вызов конструктора?
Constructor.call({$:1})
- это вообще непонятно, к чему
т.е.
if (this.$)
- это ненадёжно? когда-то сработает, а когда-то нет?

danik.js 01.12.2014 22:47

Цитата:

Сообщение от OlegALL
Какая разница, как проверять вызов конструктора?

:blink:

danik.js 01.12.2014 22:49

Цитата:

Сообщение от OlegALL
это вообще непонятно, к чему

$.call({$:1})


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