Hay dos partes principales que var FOO = FOO || {};
cubre.
# 1 Prevención de anulaciones
Imagine que tiene su código dividido en varios archivos y sus compañeros de trabajo también están trabajando en un objeto llamado FOO
. Entonces podría dar lugar al caso de que alguien ya haya definido FOO
y asignado una funcionalidad (como una skateboard
función). Entonces lo anularía, si no estuviera comprobando si ya existe.
Caso problemático:
// Definition of co-worker "Bart" in "bart.js"
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};
// Definition of co-worker "Homer" in "homer.js"
var FOO = {};
FOO.donut = function() {
alert('I like donuts!');
};
En este caso, la skateboard
función desaparecerá si carga el archivo JavaScript homer.js
después bart.js
en su HTML porque Homer define un nuevo FOO
objeto (y por lo tanto anula el existente de Bart), por lo que solo conoce la donut
función.
Por lo tanto, debe usar lo var FOO = FOO || {};
que significa "FOO se asignará a FOO (si ya existe) o un nuevo objeto en blanco (si FOO aún no existe).
Solución:
var FOO = FOO || {};
// Definition of co-worker Bart in bart.js
FOO.skateboard = function() {
alert('I like skateboarding!');
};
// Definition of co-worker Homer in homer.js
var FOO = FOO || {};
FOO.donut = function() {
alert('I like donuts!');
};
Debido a que Bart y Homer ahora están verificando la existencia de FOO
antes de definir sus métodos, puede cargar bart.js
y homer.js
en cualquier orden sin anular los métodos del otro (si tienen nombres diferentes). Por lo tanto, siempre obtendrá un FOO
objeto que tenga los métodos skateboard
y donut
(¡Yay!).
# 2 Definiendo un nuevo objeto
Si ha leído el primer ejemplo, entonces ya sabe cuál es el propósito de || {}
.
Porque si no hay un FOO
objeto existente, entonces el caso OR se activará y creará un nuevo objeto, por lo que puede asignarle funciones. Me gusta:
var FOO = {};
FOO.skateboard = function() {
alert('I like skateboarding!');
};