Namespace jProton
Namespace central do framework. jProton é um namespace executável, de modo
que ele é tanto um agregador de métodos/atributos quanto uma função. Como
namespace, ele é o agregador de todas funcionalidades do framework. Como
função, ele é um atalho para o principal recurso do framework: a seleção de
elementos do documento. Além disso, o namespace $ é um atalho para
jProton, de modo que os dois códigos abaixo:
// Usa o namespace jProton para instanciar a classe jProton.Set jProton(selector, context) // Usa o atalho $ para instanciar a classe jProton.Set $(selector, context)
equivalem a:
// Instancia uma nova classe jProton.Set explicitamente new jProton.Set().select(selector, context)
A maioria dos recursos do framework encontram-se dentro de outros namespaces
dentro de jProton, como jProton.Set, ou jProton.ajax. Mas, alguns
recursos especiais encontram-se no próprio namespace jProton, como os
métodos jProton.trim() e jProton.each(), acessíveis também como
$.trim() e $.each().
Defined in: jproton.js.
Cria um namespace, e retorna o último objeto desse namespace.
Exemplo:
// Cria o namespace 'my.name.space' caso não exista, e retorna o último
// objeto do namespace, no caso o objeto 'space'.
$.namespace('my.name.space');
| {Object} | ns |
Namespace a ser criado. |
Extende as propriedades de um ou mais objetos-fonte para outro objeto-alvo.
Se apenas um objeto for passado como parâmetro, ele será considerado o
objeto-fonte, e o objeto referenciado por this será considerado o alvo,
que nesse caso será o namespace jProton. Se mais de um objeto for
passado como parâmetro, o primeiro objeto será considerado o alvo, e os
objetos restantes serão considerados as fontes.
Ao final, será retornado o objeto-alvo extendido.
Sintaxe:
jProton.extend( source || ( target, source1 [ , source2, ... ] ) );
Existem três propriedades que possuem significado especial quando
definidas no objeto fonte. Elas são: @init, @extension e @require.
Essas propriedades não serão extendidas para o objeto alvo, servindo apenas
para definir respectivamente a inicialização, registro e dependência da
extensão.
NOTA: A maneira de declarar as extensões e suas dependências será
diferente na versão 0.4.x, e por consequência, as propriedades
@extension e @require entrarão em desuso.
Inicialização de Extensões
Algumas extensões necessitam que um determinado código seja executado
assim que a extensão for criada. Para isso, deve-se informar no objeto
fonte a ser inicializado a propriedade especial @init, com a devida
função de inicialização como seu valor.
Registro de Extensões
Além disso, o método jProton.extend() pode ser usado também para registrar
extensões automaticamente. Para isso, deve-se informar uma propriedade
especial no objeto fonte com nome @extension. O valor dessa propriedade é
um objeto que especifica o nome e versão da extensão, no seguinte formato:
'@extension': {'name': 'version'}
O registro é feito definindo uma propriedade com nome name e valor
version no namespace extensions do objeto alvo. Repare que se um
namespace for informado como alvo, a extensão será registrada no último
objeto do namespace, como exemplificado abaixo:
target.namespace.extensions.name = 'version';
Dependência de Extensões
Se a extensão que está sendo criada usa recursos de uma outra extensão,
deve-se usar a propriedade especial @require para a dependência com
outra extensão, evitando assim que a extensão seja carregada caso a
extensão requirida não esteja instalada.
Se a extensão requerida não estiver instalada, será gerado um erro indicando que a extensão deve ser instalada. Se a extensão requerida estiver instalada, mas for de uma versão inferior a versão requerida, será gerado um erro indicando a versão instalada é inferior a versão requerida.
O exemplo a seguir ilustra o uso das três propriedades especiais para
se criar uma extensão de jProton. Será criada a extensão myExt versão
0.1 no namespace jProton.myPlugin apenas se a extensão myOtherExt
versão 0.2 já estiver instalada em jProton.myPlugin. Se a extensão
requerida estiver instalada, será criado o namespace jProton.myPlugin,
e adicionado a ele a propriedade newProperty e o método newMethod. Além
disso, como esta sendo informado a propriedade @extension, será criada
uma nova propriedade jProton.myPlugin.extensions.myExt com o valor 0.1.
Ao final, será retornado o objeto alvo raiz, no caso, o objeto jProton.
Exemplo 2:
// Cria o namespace onde do plugin
$.namespace('jProton.myPlugin');
// Cria uma nova extensão no namespace 'jProton.myPlugin'. Será criada
// uma nova propriedade 'jProton.myPlugin.extensions.myExt' com o valor
// '0.1' indicando o registro e versão da extensão.
$.extend(jProton.myPlugin, {
// declara a dependência com outra extensão
'@require': {'myOtherExt': '0.2'},
// registra a extensão
'@extension': {'myExt': '0.1'},
// Função de inicialização
'@init': function() {
// O código de inicialização segue aqui
...
},
// nova propriedade a ser extendida
newProperty: 'value',
// novo método a ser extendido
newMethod: function() {
return this.newProperty;
}
});
| {Object} | target?, Default: |
Objeto alvo para onde as propriedades serão copiadas. |
| {Object} | source |
Objeto fonte de onde as propriedades serão copiadas. |
| {Object} |
Retorna o objeto |
| jProton.namespace |
Atalho para a função document.getElementById().
| {String} | id |
| {Element} |
Executa uma função para cada elemento de um array.
// Exibe os elementos de um array
$.each(array, function(i,e) {
alert('O elemento de número ' + i + ' é igual a ' + e);
});
| {Array} | a |
Array a ser percorrido. |
| {Function} | fn |
Função a ser chamada para cada elemento. |
Remove os espaços laterais de uma string.
| {String} | s |
String a ser alterada. |
| {String} |
Realiza uma requisição ajax do tipo get, retornando texto.
| {String} | url |
URL a ser requisitada. |
| {Data} | data |
Dados a serem enviados. |
| {Function} | callback |
Função de retorno. |
Realiza uma requisição ajax do tipo get, retornando JSON.
| {String} | url |
URL a ser requisitada. |
| {Data} | data |
Dados a serem enviados. |
| {Function} | callback |
Função de retorno. |
Realiza uma requisição ajax do tipo get, retornando XML.
| {String} | url |
URL a ser requisitada. |
| {Data} | data |
Dados a serem enviados. |
| {Function} | callback |
Função de retorno. |