js 입문 (10) - 원형

3434 단어
인도 하 다.
        어떤 방법 이 든 () 를 더 해 야 집행 을 나타 낸다.추가 하지 않 으 면 이 방법의 주 소 를 새로운 변수 에 할당 하 는 것 을 의미 합 니 다.
        아래 코드 에서
		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 () 를 통 해 프로 토 타 입 을 가 져 온 다음 프로 토 타 입 에 있 는 속성 을 읽 을 수 있 습 니 다.대상 의 해당 속성 을 직접 삭제 하거나

좋은 웹페이지 즐겨찾기