JS Resumo do conhecimento (a)

Resume muitas pequenas tempo para absorver esse conhecimento para Bingo esqueça de ler.

Sobre orientada a objeto

recursos orientados a objetos:

  • Ele tem uma identificação única
  • com o status
  • Behavior

JS objeto orientada JAVA e realização de idéias não é o mesmo, JS não é uma classe com base em um protótipo baseado. Mas os JS, a fim de olhar mais como JAVA, para este fim uma série de recursos adicionais.

Para pôr de lado as propriedades olhar como JAVA introduzido, JS resumo orientada a objeto é simples: Cada objeto tem um protótipo, não consegue encontrar a propriedade foi encontrar-se em objeto de protótipo até Object.prototype.

ES3 era a fim de operar o protótipo que não só pode usar new, mas introduz um método especial de operação do protótipo após ES5:

  • Object.create ()
  • Object.setPrototypeOf ()
  • Object.getPrototypeOf ()

Para que possamos colocar de lado o conceito de classes de frente para o protótipo orientada a objetos.

JS para a porção JAVA simulação orientada por objectos

As seções a seguir são analógicos atua JAVA no meu entendimento:

  • nova função pode ser invocado
  • A introdução deste mecanismo
  • operador instanceof

Chamando nova função é principalmente para fazer três coisas:

  • Use nova função é chamada a propriedade protótipo para construir um novo objeto
  • O novo objeto como esta função, a função é chamada
  • Tal como o tipo devolvido nenhuma referência a este novo objecto é devolvido

Acima é a classe de simulação JAVA, retiradas no novo ES5 podemos fazer a mesma coisa, e não ter pessoas pensam que isto é uma classe.

isso é ainda mais complexa, um grande número de artigos para explicar isso no JS, que pode ser visto um pouco complicado.

Os dados de tipo JS

JS um total de sete tipos de dados:

  • Nulo
  • Indefinido
  • Número
  • Corda
  • boleano
  • Símbolo (ES6 nova adição)
  • Objecto (tipos de referência)

Sete tipos de tipos de dados foi dividida em duas categorias: tipos primitivos e tipos de referência.

Como determinar o tipo de dados correspondentes ao tipo de dados é?

Há três resumo: typeof, instanceofe Object.prototype.toString.call(), destes três tem suas próprias características.

tipo de

Pode retornar substancialmente correspondente para o tipo de dados, com duas excepções, é um typeof nullretorno "object", e a outra é typeof function() {}devolvido"function"

instancia de

À esquerda é um objeto à direita é um construtor.

instanceof vai atravessar o objeto de protótipo, descobrir se existe uma propriedade protótipo da função.

Eu acho que, para verificar se matriz de dados é muito conveniente [] instanceof Array, é claro, isso é problemático, de modo a parte de trás e fornece um Array.isArray()método para determinar se a matriz.

Object.prototype.toString.call ()

Este método fornece um valor de retorno muito detalhado, o que não só irá devolver o tipo do acima, também inclui muitos objectos embutidos JS, por exemplo: Array, Date, RegExpe semelhantes.

Mas esse objeto tem um problema, ele vai forçar a embalagem . Esse julgamento não é um tipo básico ou um tipo de referência, se cuidado se a necessidade de cumprir typeof.


Object.prototype.toString.call(1); // [object Number]

Object.prototype.toString.call(new Number(1)); // [object Number]

O valor de retorno é o mesmo.

Sobre boxing e unboxing

Ele diz boxing e unboxing é necessário mencionar sobre sua aparência - tipo de conversão implícita.

JS aplicações de conversão de tipo amplamente implícito, é a mais conhecida ==. Não quando chamar diretamente o str.indexOfmétodo quando, str, obviamente, não sendo dado valor básico é encaixotado no trabalho.

embalagem

Cada um tem um valor que corresponde substancialmente a classes de objectos, um valor de base da embalagem é convertido em um tipo de objecto correspondente. Mas pelo novo símbolo não é chamado, por isso temos de pensar em outras maneiras.

Os supra-mencionados Object.prototype.toString.callforças embalagem:

function a() {
  return this;
}
a.call(Symbol())  // 查看打印

Desembalar (toPrimitive)

Ele chama o objeto antes de desembalar valueOfmétodo, se o valor de retorno é valores não-básicos podem ser recuperados toString, o valor de retorno é o valor de erro não-básico.

Lembre-se das perguntas rosto Pianmen isso?

	if (a == 2 && a == 3) {
      console.log(true);
	}

Embora a língua é o lado ruim, mas também pode compreender o seguinte. Aqui usou a desconsolidação de conhecimento.

Se um é um primitivo e fazer ==a comparação, em primeiro lugar um desembalar, desembalagem passos como descrito acima.

let b = 1;
let a = {
  valueOf: () => ++b
}

if (a == 2 && a == 3) {
  console.log(true);
}

Isto irá imprimir true.

personalizado unboxing

Sobre desembalar palavra final é que agora você pode personalizar o comportamento.

let o = {
  [Symbol.toPrimitive]: () => "hello world"
};

console.log('' + o);

Número

Sobre Number One dúvida é NaN, no final, não é um número. typeof NaNNa verdade, o retorno de número. Portanto, não é um número é um número.

Nós todos sabemos que existem problemas de precisão em JS digitais: 0.1 + 0.2 === 0.3retornos falsos. Desta vez ele vai ajudar Number.EPSILON para nos ajudar a julgar Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON.

JS é distinguir entre 0 e -0, mas +0 === -0retorna verdadeiro. Então, como distinguir entre 0 e -0-lo, este é o polyfill problema Object.is () precisa ser considerado.

Podemos ser distinguido pelo denominador e com +0 -0:

1 / 0 === Infinity // true
1 / -0 === -Infinity // true
1 / 0 === 1 / -0 // false

função

Pelo desenvolvimento real, sabemos que algumas funções pode ser chamado diretamente e uso newchamar alguns ponteiro de função por newchamar algumas funções só pode ser chamado diretamente.

Atrás desta existe um mecanismo de controlo. JS tipo de dados é geralmente divididos em dois tipos, um tipo básico é um tipo de referência. É lógico, então, que a função não é um tipo básico é um tipo de referência, um tipo de referência é o único objeto que é uma função de um objeto, por que o objeto pode chamar essa função e outras não objetos de TI?

Isso ocorre porque o objeto de função tem duas propriedades privadas determinar as características do anterior, não temos os meios para definir e visualizar tanto a propriedade privada. Um deles é [[constructor]], o outro [[call]]. Respectivamente determina se a chamada pode ser chamado diretamente pelo novo e.

Nota : Você não pode chamar a nova função por exemplo () => {}setas funções, tais funções não pode chamar diretamente Imagea função fornecida por um ambiente como esse.

Estão resumidas no tempo imediato re-aprender a secção dianteira, inverno disse que o conhecimento é livre, taxa de educação, resumiu aqui deve ser considerada conhecimento, a educação permaneceu em uma coluna no.

Publicado 48 artigos originais · ganhou elogios 52 · vê 50000 +

Acho que você gosta

Origin blog.csdn.net/letterTiger/article/details/100973432
Recomendado
Clasificación