Pull to refresh
28
0
Миндубаев Андрей @Covex

Разработчик ПО

Send message
не нужно читать тонны документации по реализации этого самого API

а точно известно что вам всего навсего надо сделать UPDATE по заранее определённому URI
Это, мягко говоря, не так!
REST нам всего-лишь предлагает использовать GET, POST и др. в запросе в качестве глаголов ДАЙ, ИЗМЕНИ и др., а формат запроса всё равно находится где-то в дебрях документации.

Для примера хотел дать ссылку на документацию по Google AJAX Search RESTful API, но нашёл только URI ресурса: ajax.googleapis.com/ajax/services/search/web. Попробуйте воспользоваться всеми приемуществами REST и вывести не 4, а 8 результатов поиска + завернуть результат в callBack-функцию, не пользуясь документацией!
В таком случае DELETE и PUT — это стандарт только для HTTP, но не для REST. А если учесть, что использование DELETE и PUT затруднено, то отождествление «REST» и «применения этих двух методов» вносит одну только путаницу.

Ещё я хотел бы отметить, что без DELETE и PUT на первое место выходят принципы «отсутствие состояния клиента на сервере» и «кэшируемость всего» — а это всего лишь «сложные» и уже «не невозможные» задачи.
Принципы RESTful совсем не предполагают использование DELETE и PUT, а в Википедии про них сказано только в качестве якобы «понятного» всем примера.
создание единой функции...
Тут важно, чтобы не захотелось сделать тоже самое с прототипом Object: из-за этого желания проход по всем свойствам объекта уже нельзя будет сделать простым for (i in Obj) {… }, что повлечёт за собой дополнительные затраты ресурсов (как минимум на hasOwnProperty)
приходится изобретать кучу странных приёмов
Так это же самое интересное! =)
Имхо, изобретения — это искусство, а постоянное использование «понятных манипуляций» — ремесленничество.
Прикольно!
Правда сразу же напрашивается «обёртка» для всего этого =)
Не работает этот метод
alert(test.method1); // --> undefined
Не. Всё будет работать без new.
Я имел ввиду немного другое. Приведу пример:
function Func() {}
var Obj = new Func();
alert(Func.constructor == Function);
Мне же хотелось иметь объект-функцию Func2, у которой был бы другой фактический конструктор — не Function, а какая-то другая моя функция.
(2All: я и сам приравниваю это своё желание к бреду — можно мне это не напоминать =)
Имхо, это не совсем то, что вы ожидаете: return e; и return req; как бы «замещают собой» действие оператора new. Уберите его — и всё будет точно так же.
Имхо, на статью не тянет =( Кода гораздо больше, чем текста:
var a = function() { this.c = 0; }
a.prototype.set = function() { this.c++; }
var b = function() {
 this.c = 0;
 this.set = function() { this.c++; }
}
function T(T1) {
 var T2 = new Date().getTime();
 if (T1) alert(T2-T1);
 return T2;
}

var i, T1, cnt = 100000, obj;
/* Первый тест: много созданий объекта и вызовов функции */
T1 = T();
for (i=0; i<cnt; i++) {
 obj = new a();
 obj.set();
}
T1 = T(T1);
for (i=0; i<cnt; i++) {
 obj = new b();
 obj.set();
}
/* На первый тест тратится на много меньше времени, чем на второй т.к. в первом случае на создание нового объекта set не тратится время */

/* Второй тест: одно создание объекта и много вызовов функции */
T1 = T(T1);
obj = new a();
for (i=0; i<cnt; i++)
 obj.set();
T1 = T(T1);
obj = new b();
for (i=0; i<cnt; i++)
 obj.set();
T1 = T(T1);
/* На первый тест тратится немного больше времени т.к. во втором случае не нужно искать функцию в прототипе объекта */

* This source code was highlighted with Source Code Highlighter.
> А прототипы ой как тормозят…
>… если нам нужен синглетон
А! Теперь всё ясно =)
Для синглтона new — действительно лишняя операция + на поиск функции set в прототипе объекта тратится время.
В остальных же случаях — вариант 2 работает быстрее, чем 1 и 3. Быстрее за счёт отсутствия необходимости создавать новые объекты-функции set при создании нового объекта.
А в каких соотношениях в ваших тестах на производительность были «Объявление объекта-функции a», «расширение объекта a функцией set» и «вызов функции set»?
Оговорка: первая конструкция работает медленнее, чем вторая
> если единственный аргумент
Мне самому нравится называть Animal и Cat — классами (я, типа, пошутить попытался =)

> как клонировать функцию без эвала?
Никак =( Мне всегда хотелось создать новый объект-функцию (но как-нибудь не через eval — это ж некрасиво =)
Согласен со всем сказаным, но вы вырвали фразу из контекста.
Непонимание не в теоретической, а в практической части — там в моём комментарии начиная со слов «Напонимание в следующем» всё написано =)
Смущают две вещи:
var klass= arguments.callee; // Говорят, что классы в JS - от лукавого !
// и
eval( 'var Cat= ' + Animal ); // А eval тем более =)
— Гы =) Доктор, ну уж вы совсем какую-то ерунду говорите.

Предлагаю голосование: если кто-то выступает за метод make_a_bird, то [+1] вам в комент и [-1] в мой, а если против — то наоборот.
— Доктор, а мне удобнее всего чесать за ухом именно с согнутой рукой! Что мне делать?

Затем, что это интуитивно понятно и удобно. А из того, что вы так называете передачу параметров в функцию-инициализатор, совсем не обозначает, что этой замечательной возможностью пользоваться запрещено.
Читал и мне тоже понравилось.
Метод «примесей» подан как «очень положительный». Я же считаю, что его наоборот следует применять по минимуму.

> не притягивающая за уши понятие «класс»
Раз уж вы заговорили про уши:
bird=function() {}
// ...
duck=function() {}
duck.prototype=new bird();
Подобный код всегда вызывал у меня непонимание: с одной стороны функция-конструктор является как-бы инициализатором свойств нового объекта, а с другой — может выступать в роли конструктора прототипа другой функции. Напонимание в следующем: как, используя данный метод, передавать параметры для инициализации нового объекта? Ответа я так и не нашёл (вариант проверки параметров на undefined в функции-конструкторе не подходит, потому что код становится не красивым =)

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity