Думая о переходе на Ubuntu!

Примеры имеют совсем другие результаты.

Перед рассмотрением различий, следующее должно быть отмечено:

  • конструктор А прототип позволяет совместно использовать методы и значения среди экземпляров через экземпляр, частный [[Prototype]] свойство.
  • функция А это установлено тем, как функция вызвана, или при помощи [1 130] связывают (не обсужденный здесь). Где функция вызвана на объекте (например, myObj.method()) тогда это в рамках метода ссылается на объект. Где это не установлено вызовом, или при помощи [1 133] связывают , он принимает значение по умолчанию к глобальному объекту (окно в браузере) или в строгом режиме, остается неопределенным.
  • JavaScript является объектно-ориентированным языком, т.е. большинство значений является объектами, включая функции. (Строки, числа и булевские переменные не объекты.)

, Таким образом, вот рассматриваемые отрывки:

var A = function () {
    this.x = function () {
        //do something
    };
};

В этом случае, переменной A присваивают значение, которое является ссылкой на функцию. Когда та функция вызвана с помощью [1 110], функция , это не установлено вызовом, таким образом, это принимает значение по умолчанию к глобальному объекту, и выражение this.x эффективно window.x. Результат состоит в том, что ссылка на выражение function на правой стороне присвоена [1 113].

В случае:

var A = function () { };
A.prototype.x = function () {
    //do something
};

что-то совсем другое происходит. В первой строке переменная A присвоена ссылка на функцию. В JavaScript все объекты функций имеют прототип свойство по умолчанию, таким образом, нет никакого отдельного кода для создания объект A.prototype.

Во второй строке, A.prototype.x присвоен ссылка на функцию. Это создаст x свойство, если это не будет существовать или присваивать новое значение, если это делает. Так различие с первым примером, в котором объекте x свойство вовлечено в выражение.

Другой пример ниже. Это подобно первому (и возможно что Вы означали спрашивать о):

var A = new function () {
    this.x = function () {
        //do something
    };
};

В этом примере, new оператор был добавлен перед выражением function так, чтобы функция была вызвана как конструктор. Когда названо с [1 116], функция это установлено сослаться на новый Объект, чей частный [[Prototype]] свойство установлено сослаться на общественность конструктора прототип . Таким образом в операторе присваивания, x свойство будет создано на этом новом объекте. Когда названо как конструктор, функция возвращает этот объект по умолчанию, таким образом, нет никакой потребности в отдельном return this; оператор.

, Чтобы проверить, что А имеет x свойство:

console.log(A.x) // function () {
                 //   //do something
                 // };

Это - редкое использование [1 146] новый , так как единственный способ сослаться на конструктора через [1 147] A.constructor. Было бы намного более распространено сделать:

var A = function () {
    this.x = function () {
        //do something
    };
};
var a = new A();

Другой способ достигнуть подобного результата состоит в том, чтобы использовать сразу вызванное выражение function:

var A = (function () {
    this.x = function () {
        //do something
    };
}());

В этом случае, A присвоил возвращаемое значение вызывания функции на правой стороне. Здесь снова, с тех пор это не установлено в вызове, он сошлется на глобальный объект, и this.x эффективный window.x. Так как функция не возвращается, что-либо, A будет иметь значение [1 124].

Эти различия между двумя подходами также проявляют, если Вы сериализируете и десериализовываете свои объекты JavaScript к/от JSON. Методы, определенные на прототипе объекта, не сериализируются при сериализации объекта который может быть удобным, когда, например, Вы хотите сериализировать просто части данных объекта, но не это - методы:

var A = function () { 
    this.objectsOwnProperties = "are serialized";
};
A.prototype.prototypeProperties = "are NOT serialized";
var instance = new A();
console.log(instance.prototypeProperties); // "are NOT serialized"
console.log(JSON.stringify(instance)); 
// {"objectsOwnProperties":"are serialized"} 

Связанные вопросы :

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

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

1
задан 18.05.2020, 02:47

1 ответ

Q: Ubuntu полностью удалит все мои данные драйвера?

А: Да. Они не имеют большого применения под Ubuntu, поскольку в общих Windows-программах (и драйверы) не работают в Ubuntu. Отметьте, Если Вы примете решение удалить Windows, установка также удалит все разделы, такой как D:\ и любые данные, музыка, фотографии, видео, и т.д. , Так сделайте резервные копии во внешние медиа перед продолжением.

я должен буду повторно загрузить все свои графические драйверы Nvidia и даже свои драйверы беспроводных устройств?

А: май быть. Существует два вида драйверов, (1) открытый исходный код и (2) собственный. Если Ваша карта Nvidia и микросхема WiFi имеют драйверы с открытым исходным кодом, это уже включено в ядро Linux. В этом случае Вы ничего не должны загружать. Если Вашим аппаратным средствам будут нужны собственные драйверы, Вы будете в состоянии к [1 117], устанавливают флажок во время установки для загрузки любых драйверов, можение необходимо.

лучший план действий должен загрузиться от LiveDVD/USB и выбрать "Попытка Ubuntu без установки". , Если все работает, можно установить без забот.

, Если что-то как WiFi не работает, подтвердите, что Ethernet работает, и свяжите компьютер с Интернетом во время установки. Это позволит процессу установки искать обновленные драйверы. Некоторые микросхемы WiFi не могли обновить драйверы в репозиториях, и Вам, вероятно, придется вручную загрузить и установить его. Поиск производит микросхемы конкретные инструкции, если это происходит.

я буду в состоянии соединиться с Интернетом сразу же, чтобы сделать так даже при том, что я полностью заменил Windows 7?

А: По всей вероятности Вы будете или с WiFi или с проводным кабелем Ethernet или обоими. Проверьте "Попыткой без установки". Отметьте при попытке Ubuntu от LiveDVD/USB он может использовать или или собственные драйверы с открытым исходным кодом. Лучше проверять эти две опции к (1) обновления загрузки и (2) установите собственные драйверы, во время установки.

, Если Ваш компьютер имеет технологию Optimus Nvidia, которая беспрепятственно переключается между двумя видеокартами, это не будет работать под Ubuntu. Существуют некоторые тонкие настройки для отключения одной из карт, которые можно хотеть искать после того, как установка завершена.

Hope это помогает

1
ответ дан 18.05.2020, 02:47

Теги

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