new 조작부호의 이해 [전단 매일 한 문제-7]

1426 단어

new 조작부호에 대한 이해가 무엇인지 말씀해 주시겠어요?수동으로 new 방법을 실현합니다.


시험 장소:
  • new 조작부호 내부에서 무슨 일을 했는지
  • 수동 실현 new 방법
  • 대답:
    대상:
    var obj=new Base();

    new 조작부호는 구체적으로 무엇을 했습니까?사실은 딱 세 가지야.
    var obj={};
    obj.__proto__=Base.prototype;
    Base.call(obj);
  • 첫 번째 단계, 빈 객체 만들기
  • 2단계, 빈 객체의proto__속성이 Base 함수 대상을 가리키는prototype 구성원 대상
  • 세 번째 단계에서Base 함수 대상의this바늘을obj로 바꾼 다음Base 함수
  • 를 호출합니다
  • 마지막으로 세 번째 단계의 반환값을 고찰하고 반환값이 없거나 대상값이 아닌 값을 반환하면obj를 새로운 대상으로 반환한다.그렇지 않으면 반환 값을 새 대상으로 반환합니다.

  • 시험 문제를 인용하여 설명하다.
    //    ,       
    function Animal(name){
        this.name = name;
    }
    Animal.color ="black";
    Animal.prototype.say = function(){  
        console.log("I’m " +this.name);
    };
    var cat =new Animal("cat");
    
    console.log( 
        cat.name, //cat
        cat.height //undefined
    );
    cat.say();//I’m cat 
    
    console.log(  
        Animal.name, //Animal  
        Animal.color //back
    );
    Animal.say(); //Animal.say is not a function

    전재 대상:https://juejin.im/post/5d37cef85188256345325379

    좋은 웹페이지 즐겨찾기