Pesquisar na Comunidade
Mostrando resultados para as tags ''Guia Definitivo JavaScript''.
Encontrado 1 registro
-
Erro no Livro Guia Definitivo JavaScript 6° Edição
uma questão postou Edengb Ajax, JavaScript, XML, DOM
Primeiramente Boa Tarde. Pessoal já estou 3 dias tentando relatar de um erro que vi no livro Guia Definitivo JavaScript 6° Edição. Espero que nesse fórum alguém me ajude a resolve essa questão. Esse erro se encontra na Parte 1 JavaScript básica - Capitulo 8 Funções Página 176-175. No livro está exatamente assim: Exemplo 8-3: A função extend(), corrigida, se necessário // Define uma função extend que copia as propriedades de seu segundo // argumento e dos subsequentes em seu primeiro argumento. // Resolvemos um erro do IE aqui: em muitas versões do IE, o laço for/in // não enumera uma propriedade enumerável de o, se o protótipo de o tem // uma propriedade não enumerável de mesmo nome. Isso significa que // propriedades como toString não são manipulados corretamente, a não ser // que as verifiquemos explicitamente. var extend = (function() { // Atribui o valor de retorno dessa função // Primeiramente, verifica a presença do erro , antes de usar o patch. for( var p in {toString: Null}) { // Se chegamos aqui, então o laço for/in funciona corretamente e // retornamos uma versão simples da função extend() return function extend(o) { for(var i = 1; i < arguments.length; i++) { var source = arguments[i]; for(var prop in source) o[prop] = source[prop]; } return o; }; } //Se chegamos até aqui, isso significado que o laço for/in não enumerou // a propriedade toString do objeto de teste. Portanto, retorna uma versão // não enumeráveis de Object.prototype. // E agora verifica as propriedade caso especial for( var j = 0; j < protoprops.length; j++) { prop = protoprops[j]; if(source.hasOwnProperty(prop)) o[prop] = source[prop]; return function patched_extend(o) { for(var i = 1; i < arguments.length; i++) { var source = arguments[i]; // Copia todas as propriedades enumeráveis for(var prop in source) o[prop] = source[prop]; } } return o; }; // Esta é a lista de propriedades do caso especial que verificamos var protoprops = [“toString”, “valueOf”, ”constructor”, “hasOwnProperty”, “isPrototypeOf”, “propertyIsEnumerable”, “toLocaleString”]; }()); Obs: Desculpe se o codigo não ficou totalmente legivel... é que não estou acostumado colocar aki... Pessoal resumindo o problema... Depois do comentario "// E agora verifica as propriedade caso especial" temos dois problemas... 1°) no for, ele quer protoprops.length, mas o array protoprops só vai ser declarado depois (se só fosse isso tudo bem, é só declara acima do for), 2°) quase o mesmo tipo de erro, no if, if(source.hasOwnProperty(prop))... como que eles quer chamar o metodo para source.hasOwnProperty() se source ainda não existe? repara que ele é declarado em baixo: ... if(source.hasOwnProperty(prop)) o[prop] = source[prop]; return function patched_extend(o) { for(var i = 1; i < arguments.length; i++) { var source = arguments; ... Enfim o problema é esse. Se só fosse coisa da minha cabeça tudo bem, mas o problema ta no livro... e se vocês testa no navegador (modo desenvolvedor-console) ira dar erro (isso é o q mais me preocupada, o livro esta errado). Desde já agradeço, obrigado pela paciência, e me desculpe se não consegui me expressar bem....-
- JavaScript
- Guia Definitivo JavaScript
- (e %d mais)