[JavaScript] F.prototype=1

1882 단어
js 는 인용 유형 과 값 유형 을 구분 하 는 값 유형 입 니 다. 수치, 불 값, null, undefined 참조 유형: 대상, 배열, 함수
(1) prototype 이 값 형식의 대상 이 라면
var F=function(){};
F.prototype=1;

var a=new F;
a 는 빈 대상, 즉 new Object 또는 {}, a.__proto__===Object.prototype 이다.
(2) 구조 함수 반환 값 형식의 대상
var F=function(){
    this.a=1;
    return 2;    //  2,   return this
};
var a=new F; 

(3) 구조 함수 가 인용 형식의 대상 을 되 돌려 줍 니 다.
var F=function(){
this.a=1;
    return {b:2};    //  this,      
};
var a=new F;

붙다
여기 서 제 (1) 절 a.__proto__===Object.prototype 의 원인 을 설명 한다.
우 리 는 new F 내 장 된 [Construct] 함 수 를 호출 하여 새로운 대상 을 만 들 것 이라는 것 을 알 고 있 습 니 다. F 중의 this 는 이 대상 을 가리 키 고 있 습 니 다.
5.a Let thisArgument be ? OrdinaryCreateFromConstructor (newTarget, "%ObjectPrototype%").
그리고 GetPrototype FromConstructor 를 호출 하여 새 대상 의 원형 으로 가 져 옵 니 다 proto.
그리고 GetPrototype FromConstructor 는 constructorprototype 에서 proto 를 먼저 가 져 옵 니 다.
  • Let proto be ? Get (constructor, "prototype").

  • 이 어 proto 의 유형 을 판단 한다.
    If Type(proto) is not Object, then a. Let realm be ? GetFunctionRealm (constructor). b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
    현재 필드 F.prototype=1;, proto 의 유형 은 Object 가 아니 기 때문에 protorealm 에서 intrinsicDefaultProto 값 의 내장 대상 으로 설정 합 니 다.그 중에서 intrinsicDefaultProto === "%ObjectPrototype%"6.1.7.4 Well - Known Intrinsic Objects 는 모든 내장 대상 을 열 거 했 는데 그 중에서 "%ObjectPrototype%" 이라는 내장 대상 이 바로 Object.prototype 이다.
    레 퍼 런 스
    ECMAScript Language Specification

    좋은 웹페이지 즐겨찾기