JavaSctipt의 프로토타입 원형 깊이 분석: 프로토타입의 속성은 복사본, 인용입니까, 아니면 고정된 검색 방식입니까?(2)prototype의 속성 증가

JavaSctipt의 프로토타입 원형 깊이 분석: 프로토타입의 속성은 복사본, 인용입니까, 아니면 고정된 검색 방식입니까?
                                      ----02_프로토타입 속성 증가
//
<script type="text/javascript">
  
  	var Person  = function()
  	{
  	};
  	
  	Person.prototype.username = "zhangsan";
  	
  	var person1 = new Person();
  	var person2 = new Person();
  	
  	alert(" ,person1.username: "+person1.username);
  	alert(" ,person2.username: "+person2.username);
  	
  	alert(" age ,person1.age: "+person1.age);
  	alert(" age ,person2.age: "+person2.age);
  	
  	// 
  	Person.prototype.age = new String("18");
  	
  	
  	alert(" age ,person1.age: "+person1.age);
  	alert(" age ,person2.age: "+person2.age);
  	
  	
  	</script>

//
출력: 실례를 만든 후,person1.username:zhangsan 실례를 만든 후person2.username:zhangsan이 원형에 속성age를 추가하기 전,person1.age:undefined 원형에 속성 증가 age 전,person2.age:undefined가 원형에 속성을 추가하면person1.age:18 원형에 속성age를 추가한 후person2.age:18 문제: 왜 원형에 속성을 추가한 후 2개의 실례person1,person2도 대응하는 속성을 추가했습니까?가설 1 던전: N개 실례가 생성될 때 원형의 속성을 가진 던전, 원형에 age 속성을 추가한 후, 이어서 N개 실례에 모두 age 속성을 추가합니다. 값은 원형과 같습니다(던전)
-N차 작업을 수행하려면 가능성이 높지 않습니다!가설 2 인용: N개의 실례가 생성될 때 모두 원형의 속성을 가진 인용, 원형에 age 속성을 추가한 후, 이어서 N개의 실례에 모두 age 속성(인용)을 추가합니다. 이때 Person.prototype.age와 person.age 참조 동일 객체 String("18")
-N차 작업을 수행하려면 가능성이 높지 않습니다! 
3 고정 검색 방식을 가정합니다.
N개의 실례가 만들어졌을 때 원형과 같은 이름의 속성이 없습니다. 예를 들어person이 만들어졌을 때 그 자체는username 속성이 없습니다!원형에 age 속성을 추가한 후 N개의 실례에 age 속성이 없습니다.age의 경우 그 자체에 age 속성이 없기 때문에 고정된 검색 방식에 따라 찾습니다.
person1은 Person의 실례이기 때문에 Person을 찾습니다.prototype.age의 속성을 찾지 못하면 계속해서 상위 원형을 찾습니다. 여기서 js엔진은 Person을 찾았습니다.prototype.age 속성, 그래서 출력!
- 프로토타입만 수정하고 고정된 검색 방식으로 찾으면 이 예시를 해독할 수 있습니다!
전체 텍스트 되돌리기

좋은 웹페이지 즐겨찾기