Análise do princípio de realização de instanceof e a realização de instanceof manuscrita

1. Digite julgamento.

Como todos sabemos, em JavaScript existem, sem dúvida, os três métodos a seguir para detectar o tipo de uma variável. Claro, este artigo irá pular os dois primeiros e focar no princípio de implementação de instanceof e na implementação de instanceof manuscrita.

  • tipo de método

 

  • Object.prototype.toString.call()

  • instancia de

2. O princípio de realização de instanceof.

  • oficial:

O operador instanceof é usado para testarpropriedade protótipo do construtor aparece em qualquer lugar na cadeia de protótipos do objeto .

  • Vernáculo:

Se uma instância de B , então a deve ser um objeto e B deve ser uma função válida . Quando ambas as condições forem atendidas : determine se o objeto protótipo ( B.prototype ) apontado pela propriedade protótipo de B está na cadeia de protótipos do objeto a . Retorna true se estiver presente; false se não estiver presente. Resumindo, o princípio de instanceof é na verdade um processo de encontrar a cadeia de protótipos .

3. Implementação de instanceof manuscrita.

function myInstanceof(left,right){
        //获取(构造)函数的(显式)原型
        let rp = right.prototype;
        //获取对象的(隐式)原型
        left = left.__proto__;
        //判断对象的(隐式)原型是否等于(构造)函数的(显式)原型
        while(true){
          if(left === null){
            return false
          }
          if(left === rp){
            return true
          }
          left = left.__proto__
        }
      }

      let a = /12/;
      let b = '123';
      console.log(a instanceof RegExp,myInstanceof(a,RegExp));  //true,true
      console.log(b instanceof RegExp,myInstanceof(b,RegExp));  //false,false

 

Acho que você gosta

Origin blog.csdn.net/Yi2008yi/article/details/124102143
Recomendado
Clasificación