js 입문 (10) - 원형
어떤 방법 이 든 () 를 더 해 야 집행 을 나타 낸다.추가 하지 않 으 면 이 방법의 주 소 를 새로운 변수 에 할당 하 는 것 을 의미 합 니 다.
아래 코드 에서
function Person(name){
this.name = name;
this.say = function(){
document.write("my name is"+this.name);
}
}
var p1 = new Person("lil");
var p2 = new Person("lil2");
alert(p1.say == p2.say);//false
new Person 대상 에 있 을 때마다 say 방법 은 다시 만 들 어 졌 기 때문에 p1. say 는 p2. say 와 같 지 않 습 니 다.그러나 두 가지 방법의 내용 은 완전히 같 아서 대상 을 만 들 때마다 방법 을 다시 만 들 필요 가 없다.
따라서 say 를 Person 밖으로 정의 할 수 있다.다음 과 같다.
function Person(name){
this.name = name;
this.say = say;
}
function say(){
document.write("my name is"+this.name);
}
var p1 = new Person("lil");
var p2 = new Person("lil2");
alert(p1.say == p2.say);//true
이것 은 p1 에서 say 가 가리 키 는 것 과 p2 에서 say 가 가리 키 는 것 이 같은 저장 공간 (즉, 전역 say 방법 저장 위치) 이기 때문이다.그러나 전역 적 인 방법 으로 정의 되면 어디서 든 이 방법 을 사용 할 수 있어 Person 대상 만 사용 할 수 있다 는 보장 은 없다.
기초
모든 함수 가 생 성 될 때 prototype 속성 (즉 원형 을 가리 키 는 것) 이 있 습 니 다. 이 속성 은 포인터 이 고 항상 대상 (즉 원형) 을 가리 키 고 있 습 니 다.이 대상 은 지정 한 속성 과 방법 을 저장 하 는 데 쓰 인 다.따라서 이 속성 을 사용 하면 모든 인 스 턴 스 가 특정한 속성 과 방법 을 공유 하 는 역할 을 할 수 있 습 니 다.따라서 원형 을 사용 하면 안내 중의 결함 을 차단 할 수 있다.아래 와 같다
function Person(){
}
var obj = Person.prototype;// , obj
obj.say = function(){
alert("sayname");
};
var p1 = new Person();
var p2 = new Person();
document.write(p1.say == p2.say);//true。 say Person , 。
구조 함수. prototype = 원형 대상.원형 대상. constructor = 구조 함수.
함수 명. prototype 으로 만 원형 을 가 져 올 수 있 으 며, 대상. prototype 으로 원형 을 가 져 올 수 없습니다.
원형 대상 지정
prototype 에 사용자 정의 대상 을 지정 할 수 있 습 니 다. 이 대상 은 이 함수 의 원형 이 됩 니 다.다음 과 같다.
function Person(){
}
// Person
Person.prototype = {
name:"name",
say:function(){
document.write(" say ");
}
}
var p1 = new Person();
document.write(p1.say());// say
원형 대상 을 사용자 정의 할 때 원형 을 지정 한 constructor 가 없 으 면 원형의 구조 방법 은 Object 의 구조 방법 입 니 다.따라서 프로 토 타 입 대상 을 사용자 정의 할 때 constructor 를 지정 해 야 합 니 다.대상 의 첫 줄 에: constructor: Person 을 추가 합 니 다.그러나 이 방법 을 사용 할 때 constructor 는 매 거 될 수 있 지만 기본 적 인 상황 에서 constructor 는 매 거 될 수 없 을 것 입 니 다.이 문 제 를 피하 기 위해 서 는 Object. defineProperty () 를 사용 해 야 합 니 다.
설명 하 다.
원형 은 하나의 대상 이기 때문에 대상 에 게 속성 과 방법 을 정의 하 는 방식 으로 원형 에 대해 모든 속성 과 방법 을 지정 할 수 있다.원형 의 속성 이나 방법 이 인 스 턴 스 대상 과 동시에 인 스 턴 스 대상 은 원형 에 해당 하 는 속성 이나 방법 을 덮어 씁 니 다.다음 과 같다.
function Person(){
}
var obj = Person.prototype;
obj.name = "prototype";
var p1 = new Person();
p1.name = "p1";
document.write(p1.name);// name , p1
document.write("<br/>");
var p2 = new Person();
document.write(p2.name);// name "prototype"
대상 의 속성 을 읽 을 때 시작 합 니 다.우선
대상 에서 이 속성 이 있 는 지 검색 하고 있 으 면 되 돌려 줍 니 다.없 으 면 이 대상 의 원형 에서 계속 검색 하고 있 으 면 되 돌아 가 고 없 으 면 undefined 로 돌아 갑 니 다.
프로 토 타 입 에 있 는 속성 값 을 읽 으 려 면 Object. getPrototypeOf () 를 통 해 프로 토 타 입 을 가 져 온 다음 프로 토 타 입 에 있 는 속성 을 읽 을 수 있 습 니 다.대상 의 해당 속성 을 직접 삭제 하거나
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.