Шаблон модуля по сравнению с экземпляром анонимного конструктора

Можно использовать обеспеченные системные представления, чтобы сделать это:

, например,

select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'

альтернативно, можно использовать систему proc sp_help

, например,

sp_help '[table name]'
25
задан 8 October 2009 в 07:22
поделиться

4 ответа

Более или менее, они дают вам тот же результат. Вопрос лишь в том, какой путь вы выберете для этого.

Первый может быть более популярным, поскольку это просто смесь двух уже распространенных шаблонов:

(function closure() {
    var foo = 'private';
    /* ... */
}())

var singleton = {
    bar : 'public'
};

Однако прототипа цепочки будет Преимущество второго шаблона, так как он имеет собственный конструктор.

var singleton = new function Singleton() { };
assert(singleton.constructor !== Object);

singleton.constructor.prototype.foo = 'bar';
assert(singleton.foo === 'bar');
3
ответ дан 28 November 2019 в 21:56
поделиться

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

С другой стороны, подход «модульного шаблона» кажется наиболее распространенным и становится широко известным шаблоном (из-за роста JQuery). Возможно, лучше придерживаться этого признанного шаблона не потому, что он имеет больше технических достоинств, чем другой подход, а просто потому, что он, вероятно, будет более узнаваемым (несмотря на тяжелую пунктуацию).

1
ответ дан 28 November 2019 в 21:56
поделиться

Дуглас Крокфорд пишет о втором. Как говорит Грег в своих комментариях, я думал, что это довольно распространено, и я использовал его в прошлом.

Изменить: чтобы на самом деле ответить на ваш вопрос - нет недостатков, оба функционально эквивалентны (оба создают закрытие, содержащее «частные переменные» и публичное предоставление других переменных / методов), и имеют точно такие же характеристики поддержки и производительности браузера. Все сводится к синтаксису - в основном, к тому, где вы помещаете () , чтобы фактически вызвать эту функцию и получить ваше закрытие, и используете ли вы ключевое слово new .

]
1
ответ дан 28 November 2019 в 21:56
поделиться

Оболочка mongodb javascript документирована по адресу http://docs.mongodb.org/manual/reference/method/

Если вы хотите получить назад только определенные поля объекта, вы можете использовать

db.collection.find( { }, {fieldName:true});

Если, с другой стороны, вы ищете объекты, которые содержат определенное поле, вы можете подать в суд

db.collection.find( { fieldName : { $exists : true } } );
-121--2410585-

Я не уверен, как перевести его в C # (Я работаю над этим)

Это версия Haskell

minAndMax :: Ord a => [a] -> (a,a)
minAndMax [x]    = (x,x)
minAndMax (x:xs) = (min a x, max b x)
                   where (a,b) = minAndMax xs

Версия C # должна включать Агрегировать некоторые способы (я думаю).

-121--1422460-

В этом случае вы используете только один объект экземпляра этого «класса» . Поэтому может потребоваться взглянуть на то, что Дуглас Крокфорд думает о том, что ставит новый непосредственно перед функцией :

Используя новый для вызова функции, объект удерживается на бесполезном прототипе объекта. Это растрачивает память без компенсационного преимущества. Если мы не используем новый, мы не будем хранить потерянный объект прототипа в цепочке. Таким образом, вместо этого мы будем вызывать фабричную функцию правильным путь, используя ().

Так по известному javascript архитектора Yahoo! вы должны использовать первый метод, и у вас есть его причины.

12
ответ дан 28 November 2019 в 21:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: