js 의 원형 기반(전면 설명)
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 중의 원형(전면적 인 설명)을 바탕 으로 하 는 것 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.