js 의 원형 기반(전면 설명)

4008 단어 js원형
js 의 원형 을 말 하기 전에 Object 와 Function 을 먼저 알 아야 합 니 다.
Object 와 Function 은 모두 JS 의 자체 함수 로 서 Object 는 자신 을 계승 하고 Funtion 은 자신 을 계승 하 며 Object 와 Function 은 서로 상 대 를 계승 한다.즉,Object 와 Function 은 모두 함수 이자 대상 이다.

console.log(Function instanceof Object); // true
console.log(Object instanceof Function); // true
Object 는 Function 의 인 스 턴 스 이 고 Function 은 자신의 인 스 턴 스 입 니 다.

console.log(Function.prototype); // ƒ () { [native code] }
console.log(Object.prototype);  // Object
일반 대상 과 함수 대상
자 바스 크 립 트 에 서 는 만물 이 대상 이지 만 대상 간 에 도 차이 가 있다.함수 대상 과 일반 대상 으로 나 뉜 다.
함수 대상 은 일반 대상 을 만 들 수 있 습 니 다.일반 대상 은 함수 대상 을 만 들 수 없습니다.일반 대상 JS 세계 에서 가장 낮은 등급 의 작은 등급 입 니 다.아무런 특권 도 없습니다.
new Function 을 통 해 생 성 된 대상 은 모두 함수 대상 이 고,다른 대상 은 모두 일반 대상(보통 Object 를 통 해 생 성)이 며,typeof 를 통 해 판단 할 수 있 습 니 다.

function f1(){};
typeof f1 //"function"


var o1 = new f1();
typeof o1 //"object"

var o2 = {};
typeof o2 //"object"
여기 서 주의해 야 할 것 은 아래 두 가지 표기 법 이 같다 는 것 이다.

function f1(){};  ==  var f1 = new Function();

function f2(a,b){
  alert(a+b);
}

   

var f2 = new Function(a,b,"alert(a+b)");
prototype、_proto_construetor(구조 함수)
다음 두 마디 도 중요 합 니 다.
1.모든 함수 대상 에 하나의 prototype 속성 이 있 지만 일반 대상 은 없습니다.
prototype 아래 에 또 하나의 construetor 가 있 는데 이 함 수 를 가리 키 고 있 습 니 다.
2.대상 마다 이름 이proto_의 내부 속성 은 그 에 대응 하 는 구조 함수 의 원형 대상 을 가리 키 고 원형 체인 은proto_;
자,코드 와 예 를 들 어 일반 대상 을 만 들 기 시작 하면 우 리 는 볼 수 있 습 니 다.
1.o 프로 토 타 입 속성 이 없 음
2.o 는 Object 의 인 스 턴 스 입 니 다.
3、o 의proto__Object 를 가리 키 는 prototype
4.Object.prototype.constructor 는 Object 자 체 를 가리킨다.
계속 내 려 갈 수도 있 고...

var o = {};
  console.log(o.prototype); //undefined
  console.log(o instanceof Object); //true
  console.log(o.__proto__ === Object.prototype) //true
  console.log(Object === Object.prototype.constructor) //true 
  console.log(Object.prototype.constructor) //function Object()
  console.log(Object.prototype.__proto__); //null

다음은 함수 대상 입 니 다.아래 의 예 에서 볼 수 있 습 니 다.
1.demo 는 함수 대상,f1 또는 일반 대상
2.f1 은 데모 의 인 스 턴 스 입 니 다.
3.demo 의 원형 prototype 의proto__Object 의 원형 prototype 을 가리 키 고 Object 의 원형 prototyped 의proto__null 가리 키 기;

function Demo(){};
  var f1 = new Demo();
  console.log(f1.prototype); //undefined
  console.log(f1 instanceof Demo); //true
  console.log(f1.__proto__ === Demo.prototype); //true
  console.log(Demo === Demo.prototype.constructor) ;//true
  console.log(Demo.prototype.__proto__ === Object.prototype) ;//true
  console.log(Object.prototype.__proto__); //null

원형 체인
javascript 에서 모든 대상 은 내부 에서 하나의 proto 속성 을 생 성 합 니 다.우리 가 대상 속성 을 방문 할 때 이 대상 이 존재 하지 않 으 면 proto 가 가리 키 는 대상 에서 찾 고 한 층 한 층 찾 습 니 다.이것 이 바로 javascript 원형 체인 의 개념 입 니 다.
f1.__proto__ ==> Demo.prototype ==> Demo.prototype.__proto__ ==> Object.prototype ==> Object.prototype.__proto__ ==> null
JS 의 모든 것 은 대상 이 고 모든 것 은 Object 에서 파생 됩 니 다.즉,모든 것 의 원형 체인 의 종점 은 null 을 가리 키 고 있 습 니 다.
이상 의 이 편 은 js 중의 원형(전면적 인 설명)을 바탕 으로 하 는 것 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기