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에 따라 라이센스가 부여됩니다.