// 프로토타입 테스트
window.A = function() {
var _tmp = 'hello';
this.x = function() {
console.log(_tmp + ' in this(공유)');
};
A.prototype.x = function() {
console.log(_tmp + ' in prototype(상속)');
};
this.thisSetTmp = function(_getStr) {
_tmp = _getStr;
};
A.prototype.protoSetTmp = function(_getStr) {
_tmp = _getStr;
};
};
A.prototype.y = function() {
console.log('외부에서 prototype 설정 in prototype(상속)');
};
var B = new A();
var C = new A();
console.log(B);
console.log(C);
// A.x(); // undefine error 발생
A.prototype.x(); // hello in prototype(상속)
B.x(); // hello in this(공유) // 같은 이름일 때 상속(prototype)보다 공유(this)가 우선 순위가 더 높음
C.x(); // hello in this(공유)
B.y(); // 외부에서 prototype 설정 in prototype(상속)
C.y(); // 외부에서 prototype 설정 in prototype(상속)
B.thisSetTmp('worldB_1');
C.thisSetTmp('worldC_1');
B.x(); // worldB_1 in this(공유)
C.x(); // worldC_1 in this(공유)
// C.prototype.protoSetTmp('world2'); // undefine error 발생(생성자는 상속(prototype)의 제어는 불가능)
B.protoSetTmp('worldB_2');
C.protoSetTmp('worldC_2');
B.x(); // worldB_1 in this(공유)
C.x(); // worldC_2 in this(공유)
A.prototype.protoSetTmp('worldA_3');
B.x(); // worldB_1 in this(공유)
C.x(); // worldA_3 in this(공유)
// //프로토타입 테스트
왜 빨강색을 보면 worldB_2를 넣었는데 파란색 처럼 worldB_1 이 나올까요?
C는 정상적으로 worldC_2가 나오는데 참으로 황당합니다.
혹 뭐가 잘못되었는지 알려주실 분 덧글 부탁 드립니다.
'기타 > 프로그래밍 관련' 카테고리의 다른 글
Oracle DB 언어 확인하는 법 (0) | 2014.06.24 |
---|---|
JavaScript Short-circuiting evaluations (0) | 2014.06.13 |
html tag input 관련 (0) | 2014.04.15 |
Eclipse PHP Debug 가능하게 설정하기(PDT 이용) (0) | 2014.04.07 |
전자정부프레임워크 SELECT JSON 처리 (0) | 2014.02.19 |