Crockford сделал много для популяризации хороших методов JavaScript. Его самоуверенная позиция по основным элементам языка зажгла много полезных обсуждений. Однако существует слишком много людей, которые берут каждое провозглашение "плохих" или "вредных" как евангелие, отказываясь на время забыть мнение одного человека. Это может время от времени быть немного печально.
Использование функциональности, обеспеченной new
, ключевое слово имеет несколько преимуществ перед созданием каждого объекта с нуля:
prototype
и использование new
для искоренения новых объектов. Не только это быстрее (никакой код, необходимый для каждого метода на прототипе), это старается не увеличиваться каждый объект с раздельным имуществом для каждого метода. На более медленных машинах (или особенно, медленнее интерпретаторы JS), когда много объектов создаются, это может означать значительные сбережения вовремя и память. И да, new
имеет один решающий недостаток, успешно описанный другими ответами: если Вы забудете использовать его, Ваш код повредится без предупреждения. К счастью, тот недостаток легко смягчен - просто добавляют немного кода к самой функции:
function foo()
{
// if user accidentally omits the new keyword, this will
// silently correct the problem...
if ( !(this instanceof foo) )
return new foo();
// constructor logic follows...
}
Теперь у Вас могут быть преимущества new
, не имея необходимость волноваться о проблемах, вызванных случайно неправильным употреблением. Вы могли даже добавить утверждение к проверке если мысль о поврежденном коде, тихо работающем беспокойства Вы. Или, как [приблизительно 119] прокомментировали, используйте проверку для представления исключения на этапе выполнения:
if ( !(this instanceof arguments.callee) )
throw new Error("Constructor called as a function");
(Отмечают, что этот отрывок в состоянии избежать жесткого кодирования имя функции конструктора, как в отличие от предыдущего примера, это не имеет никакой потребности на самом деле инстанцировать объекта - поэтому, это может быть скопировано в каждую целевую функцию без модификации.)
John Resig вдается в подробности об этой технике в его Простое Инстанцирование "Класса" сообщение, а также включая средство встраивания этого поведения в Ваши "классы" по умолчанию. Определенно стоящий чтения..., как его предстоящая книга, Секреты Ниндзя JavaScript , который находит спрятанным золото в этом и многих других "вредных" функциях языка сценариев JavaScript ( глава по with
особенно поучительна для тех из нас, кто первоначально отклонил эту очень порочившую функцию как трюк).
Можно переместить раздел Windows /dev/sda2
налево от одной из установок или живого диска. Можно хотеть сделать это из диспетчера дисков Windows, если он имеет загрузчик Windows в.
Тогда можно расшириться /dev/sda3
и затем /dev/sda5
налево от живого диска.
/dev/sda3
и Вы can' t изменяют размеры, это, непока не освобождено не между/dev/sda2 и/dev/sda3. Так попытайтесь сделать пространство между ними и затем изменить размеры его. Вот хорошее учебное руководство, которое было бы справкой, полной для Вас. howtogeek.com/114503/how-to-resize-your-ubuntu-partitions
– Brian White
13.05.2020, 02:20
/dev/sda3
& /dev/sda5
, возможно /dev/sda6
.
– nloewen
13.05.2020, 02:20