자바 스 크 립 트 구조 함수,인 스 턴 스,원형 대상 및 원형 체인
7759 단어 JavaScript구조 함수원형 개체원형 체인
ES6,전 칭 ECMAScript 6.0,2015.06 발.ES6 이전에 대상 은 클래스 를 기반 으로 만 든 것 이 아니 라 구조 함수 라 는 특수 함수 로 대상 과 그들의 특징 을 정의 했다.
2 구조 함수
구조 함 수 는 특수 한 함수 로 대상 을 초기 화 하 는 데 사 용 됩 니 다.즉,대상 구성원 변수 에 초기 값 을 부여 하고 항상 new 와 함께 사용 합 니 다.우 리 는 대상 중의 일부 공공 속성 과 방법 을 추출 한 후에 이 함수 에 밀봉 할 수 있다.
//
function Person(uname, age) {
this.uname = uname;
this.age = age;
this.sing = function() {
console.log(' ');
}
}
var ldh = new Person(' ', 18);
var zxy = new Person(' ', 19);
console.log(ldh);
ldh.sing();
zxy.sing();
JS 에서 구조 함 수 를 사용 할 때 다음 과 같은 두 가 지 를 주의해 야 한다.구조 함 수 는 특정한 대상 을 만 드 는 데 사용 되 는데 그 이니셜 은 대문자 구조 함수 가 new 와 함께 사용 해 야 의미 가 있다.
(1)구조 함수 실행 과정
new 는 실행 할 때 네 가지 일 을 합 니 다.
① 메모리 에 새 빈 대상 을 만 듭 니 다.
② this 로 하여 금 이 새로운 대상 을 가리 키 게 한다.
③ 구조 함수 에 있 는 코드 를 실행 하여 이 새로운 대상 에 게 속성 과 방법 을 추가 합 니 다.
④ 이 새로운 대상 을 되 돌려 줍 니 다(따라서 구조 함수 에 return 이 필요 없습니다).
(2)구조 함수 의 구성원
JavaScript 의 구조 함수 에 일부 구성원 을 추가 할 수 있 고 구조 함수 자체 에 추가 할 수도 있 으 며 구조 함수 내부 의 this 에 추가 할 수도 있 습 니 다.이 두 가지 방식 으로 추 가 된 구성원 을 정적 구성원 과 인 스 턴 스 구성원 이 라 고 합 니 다.
// sex
//
Person.sex = ' ';
console.log(Person.sex);
function Person(uname) {
this.uname = uname;
}
3 구조 함수 원형 prototype구조 함수 가 원형 을 통 해 분 배 된 함 수 는 모든 대상 이 공유 하 는 것 이다.
JavaScript 는 모든 구조 함수 에 하나의 prototype 속성 이 있 고 다른 대상 을 가리 키 도록 규정 하고 있 습 니 다.이 prototype 은 하나의 대상 입 니 다.이 대상 의 모든 속성 과 방법 은 구조 함수 에 의 해 가지 게 됩 니 다.
우 리 는 모든 대상 의 인 스 턴 스 를 공유 할 수 있 도록 변 하지 않 는 방법 을 prototype 대상 에 직접 정의 할 수 있 습 니 다.
function Person(uname, age) {
this.uname = uname;
this.age = age;
// this.sing = function() {
// console.log(' ');
// }
}
// , ,
Person.prototype.sing = function() {
console.log(' ');
}
var ldh = new Person(' ', 18);
var zxy = new Person(' ', 19);
console.log(ldh.sing === zxy.sing); //true
ldh.sing();
zxy.sing();
__proto__
대상 은 모두 하나의 속성 __proto__
이 구조 함 수 를 가리 키 는 prototype
원형 대상 이 있 을 것 이다.우리 대상 이 구조 함수 prototype
원형 대상 의 속성 과 방법 을 사용 할 수 있 는 이 유 는 대상 이 __proto__
원형 이 존재 하기 때문이다.
function Person(uname, age) {
this.uname = uname;
this.age = age;
}
Person.prototype.sing = function() {
console.log(' ');
}
var mingo = new Person(' ', 18);
var zxy = new Person(' ', 19);
mingo.sing();
console.log(mingo); // __proto__ prototype
console.log(mingo.__proto__ === Person.prototype); //true
__proto__
대상 원형 과 원형 대상 prototype
은 등가 의 __proto__
)은 Person 구조 함수 의 원형 대상 prototype
입 니 다.)__proto__
대상 의 원형 적 의 미 는 대상 의 검색 체제 에 방향 을 제공 하거나 하나의 노선 을 제공 하 는 데 있다.그러나 이것 은 비 표준 속성 이기 때문에 실제 개발 에서 이 속성 을 사용 할 수 없다.이것 은 내부 지향 원형 대상 prototype
5constructor 구조 함수
대상 원형
__proto__
과 구조 함수 prototype
원형 대상(사실은 같은 것 을 가리 키 는 것)안에 속성 constructor 속성 이 있 습 니 다.constructor 는 구조 함수 라 고 부 릅 니 다.구조 함수 자 체 를 가리 키 기 때 문 입 니 다.constructor 는 이 대상 이 어떤 구조 함수 에 인용 되 었 는 지 기록 하 는 데 사 용 됩 니 다.원형 대상 이 원래 의 구조 함 수 를 다시 가리 킬 수 있 습 니 다.
일반적인 상황 에서 대상 의 방법 은 구조 함수 의 원형 대상 에 설정 된다.만약 에 여러 대상 의 방법 이 있다 면 우 리 는 원형 대상 에 게 대상 형식 으로 값 을 부여 할 수 있 습 니 다.그러나 이렇게 하면 구조 함수 원형 대상 의 원래 내용 을 덮어 씁 니 다.이렇게 수 정 된 원형 대상 constructor 는 현재 구조 함 수 를 가리 키 지 않 습 니 다.
이 때,우 리 는 수 정 된 원형 대상 에 constructor 가 원래 의 구조 함 수 를 가리 키 는 것 을 추가 할 수 있 습 니 다.
function Person(uname, age) {
this.uname = uname;
this.age = age;
}
// , constructor
Person.prototype = {
// , , constructor
constructor: Person,
sing: function() {
console.log(' ');
},
movie: function() {
console.log(' ');
}
}
var mingo = new Person(' ', 18);
var zxy = new Person(' ', 19);
console.log(Person.prototype);
console.log(mingo.__proto__);
console.log(Person.prototype.constructor);
console.log(mingo.__proto__.constructor);
6 원형 체인모든 구조 함수 에는 원형 대상 이 있 고 원형 대상 은 구조 함 수 를 가리 키 는 지침 을 포함 하 며 인 스 턴 스 는 원형 대상 을 가리 키 는 내부 지침 을 포함한다.만약 우리 가 원형 대상 을 다른 유형의 실례 와 같 게 한다 면 결 과 는 어떻게 될 까?분명 한 것 은 이때 의 원형 대상 은 다른 원형 을 가리 키 는 지침 을 포함 하고 이에 따라 다른 원형 에 도 다른 구조 함 수 를 가리 키 는 지침 이 포함 되 어 있다.만약 다른 원형 이 또 다른 유형의 실례 라면 상술 한 관 계 는 여전히 성립 된다.이렇게 층 층 이 들 어가 면 실례 와 원형의 체인 을 구성한다.이것 이 바로 원형 체인 의 기본 개념 이다.《자 바스 크 립 트 고급 프로 그래 밍》에서 발췌 하 다.
function Person(uname, age) {
this.uname = uname;
this.age = age;
}
Person.prototype.sing = function() {
console.log(' ');
}
var mingo = new Person(' ', 18);
// 1. __proto__ ,
console.log(Person.prototype);
console.log(Person.prototype.__proto__ === Object.prototype);//true
// 2. Person __proto__ Object.prototype
console.log(Object.prototype.__proto__);
// 3. Object.prototype __proto__ null
console.log(Object);
Object 는 JavaScript 에서 가장 높 은 대상 입 니 다.다른 모든 대상 은 그것 을 기반 으로 합 니 다.당신 이 만 든 함 수 를 포함 합 니 다.7JavaScript 의 구성원 찾기 메커니즘(원형 체인 규칙 기반)
① 한 대상 의 속성(방법 포함)에 접근 할 때 먼저 이 대상 자체 에 이 속성 이 있 는 지 찾 습 니 다.
② 없 으 면 원형 을 찾 아 라(즉
__proto__
이 가리 키 는 prototype 원형 대상).③ 아직 없 으 면 원형 대상 의 원형(Object 의 원형 대상)을 찾 습 니 다.
④ 이러한 유추 에 따라 Object 를 찾 을 때 까지(null).
⑤
__proto__
대상 의 원형 의 미 는 대상 구성원 의 검색 체제 에 방향 을 제공 하거나 노선 을 말 하 는 데 있다.8 원형 대상 this 지향
1 구조 함수 중의 this 는 우리 의 실례 대상 을 가리킨다
2.원형 대상 에 넣 는 것 은 방법 입 니 다.이 방법 에서 this 는 이 방법의 호출 자 를 가리 키 고 있 습 니 다.즉,이 인 스 턴 스 대상 입 니 다.
function Person(uname, age) {
this.uname = uname;
this.age = age;
}
var that;
Person.prototype.sing = function() {
console.log(' ');
that = this;
console.log(this);
}
var mingo = new Person(' ', 18);
// 1. , this mingo
// 2. this mingo
mingo.sing();
console.log(that === mingo); //true
총결산자 바스 크 립 트 구조 함수,인 스 턴 스,원형 대상 및 원형 체인 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자 바스 크 립 트 구조 함수,인 스 턴 스,원형 대상 및 원형 체인 내용 에 대해 서 는 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.