1)
javascript 의 prototype 은
구현(?)하자면 좀 길다는 생각이 들어서요
그걸 줄여봤습니다..
참고 : JavaScript Patterns ISBN 978-89-6626-015-7
...
2)
<div id=output120329_1>결과</div>
<script>
function function120329_1() {
var a = {b: 1}, c, d
// 삭제
// , f; 삭제//
;
d = new c();
// 삭제
// f = new e(); 삭제 //
document.getElementById('output120329_1').innerHTML = d.b
// 삭제
// + ' ' + (e?e.b:'undefined') + ' ' + f.b; 삭제 //
+ ' ' + c.b;
}
function120329_1();
</script>
...
3)
...
4)
함수를 괄호로 감아(?)서, prototype 값을 변경할 수 있도록 하고, 변경한다..라는 방법이죠.
함수 앞뒤로 () - 괄호가 있습니다만.. 없으면 함수를 지정하지 못할 수도 있어서요..
예전에 설명한 prototype 과 별다른 차이가 없습니다.
그냥, 선언하는 방법이 이렇다는 것을 예제로 보여준 거죠.
prototype 설정부분 검증(?)이 길어서 그렇습니다만..
d 를 사용할 때 까지만 본다면
a={b: 1};
(c=function() {}).prototype=a;
d=new c();
요만큼이죠.
...
물론, 더 줄이면
(c=function() {}).prototype={b:1};
d=new c();
이렇게
// 틀린부분
나, 혹은 f 를 사용할 때 처럼
(function e() {}).prototype={b:1};
f=new e();
이렇게도
틀린부분 //
되겠습니다만..
코드가 길어지면
가독성이나 선언문 설정에 좀 어려움이 있을 것 같습니다.
...
5)
prototype 은 new 라는 연산자가 붙어
function 이 object 를 만들 때 제 몫을 하는 거라서요..
new 를 사용해 object 값을 받은 d // 틀린부분 와 f 틀린부분 // 에는 prototype 이 적용 됐지만,
// 교정
함수 선언문인 e 에는 prototype 선언은 할 수 있어도, prototype 룰 적용은 안되어 있는거죠.
그래서, e.b 만 undefined 가 된겁니다.
교정 //
함수 선언문인 c 에는 prototype 선언은 할 수 있어도, prototype 룰 적용은 안되어 있는거죠.
그래서, c.b 만 undefined 가 된겁니다.
6)
.. 함수의 특성상,
new 라는 연산자를 생략하는 방법도 가능은 합니다만..
(스스로 호출하는 생성자 - JavaScript Patterns ISBN 978-89-6626-015-7 )
.. 뭐, 필요하다면, 이렇게 스크랩 해와야겠군요..
function Waffle() {
if (!(this instanceof Waffle)) return new Waffle();
/* 이후, 함수 내용 들어갈 자리.. */
}
대충 이렇댑니다..
easyBow killofki@.
ps..
// 삭제
e.b 를 (e?e.b:'undefined') 로 바꿨습니다.
IE8 에서는 오류가 나지 않지만, 다른 브라우져에서는 모두 오류가 나네요.
삭제 //
..라고 적었는데, e 함수 자체가 인식이 안되는 오류였네요.
전에도 그때문에 내용을 작성하다 말았는데, ..
.. 결국, 전체적으로 긴급 수정했습니다.
'12.06.05 01:00 수정..
javascript 의 prototype 은
구현(?)하자면 좀 길다는 생각이 들어서요
그걸 줄여봤습니다..
참고 : JavaScript Patterns ISBN 978-89-6626-015-7
...
2)
<div id=output120329_1>결과</div>
<script>
function function120329_1() {
var a = {b: 1}, c, d
// 삭제
// , f; 삭제//
;
(c = function() {}).prototype = a;
// 삭제
// (function e() {}).prototype = a; 삭제 //
// 삭제
// (function e() {}).prototype = a; 삭제 //
d = new c();
// 삭제
// f = new e(); 삭제 //
document.getElementById('output120329_1').innerHTML = d.b
// 삭제
// + ' ' + (e?e.b:'undefined') + ' ' + f.b; 삭제 //
+ ' ' + c.b;
}
function120329_1();
</script>
...
3)
결과
...
4)
함수를 괄호로 감아(?)서, prototype 값을 변경할 수 있도록 하고, 변경한다..라는 방법이죠.
함수 앞뒤로 () - 괄호가 있습니다만.. 없으면 함수를 지정하지 못할 수도 있어서요..
예전에 설명한 prototype 과 별다른 차이가 없습니다.
그냥, 선언하는 방법이 이렇다는 것을 예제로 보여준 거죠.
prototype 설정부분 검증(?)이 길어서 그렇습니다만..
d 를 사용할 때 까지만 본다면
a={b: 1};
(c=function() {}).prototype=a;
d=new c();
요만큼이죠.
...
물론, 더 줄이면
(c=function() {}).prototype={b:1};
d=new c();
이렇게
// 틀린부분
나, 혹은 f 를 사용할 때 처럼
(function e() {}).prototype={b:1};
f=new e();
이렇게도
틀린부분 //
되겠습니다만..
코드가 길어지면
가독성이나 선언문 설정에 좀 어려움이 있을 것 같습니다.
...
5)
prototype 은 new 라는 연산자가 붙어
function 이 object 를 만들 때 제 몫을 하는 거라서요..
new 를 사용해 object 값을 받은 d // 틀린부분 와 f 틀린부분 // 에는 prototype 이 적용 됐지만,
// 교정
함수 선언문인 e 에는 prototype 선언은 할 수 있어도, prototype 룰 적용은 안되어 있는거죠.
그래서, e.b 만 undefined 가 된겁니다.
교정 //
함수 선언문인 c 에는 prototype 선언은 할 수 있어도, prototype 룰 적용은 안되어 있는거죠.
그래서, c.b 만 undefined 가 된겁니다.
6)
.. 함수의 특성상,
new 라는 연산자를 생략하는 방법도 가능은 합니다만..
(스스로 호출하는 생성자 - JavaScript Patterns ISBN 978-89-6626-015-7 )
.. 뭐, 필요하다면, 이렇게 스크랩 해와야겠군요..
function Waffle() {
if (!(this instanceof Waffle)) return new Waffle();
/* 이후, 함수 내용 들어갈 자리.. */
}
대충 이렇댑니다..
easyBow killofki@.
ps..
// 삭제
e.b 를 (e?e.b:'undefined') 로 바꿨습니다.
IE8 에서는 오류가 나지 않지만, 다른 브라우져에서는 모두 오류가 나네요.
삭제 //
..라고 적었는데, e 함수 자체가 인식이 안되는 오류였네요.
전에도 그때문에 내용을 작성하다 말았는데, ..
.. 결국, 전체적으로 긴급 수정했습니다.
'12.06.05 01:00 수정..
'baseJavascript' 카테고리의 다른 글
Function.apply ] chr 함수를 더 짧게 만들어봤습니다. (0) | 2012.07.06 |
---|---|
var] 이렇게 선언하면 안된다고 하네요.. (0) | 2012.06.06 |
function]..을 delete 했을 때.. ('12.09.14 14:50 추가수정..) (0) | 2012.06.02 |
prototype] function 에 붙어있는 미확인 파라메터 탐색선언자군요.. (1) | 2012.04.17 |
function var] 함수내 함수를 재사용하기 위해 함수내 변수를 전달해보고 싶었습니다. (0) | 2012.04.07 |