본문으둜 κ±΄λ„ˆλ›°κΈ°

200311

Β· μ•½ 6λΆ„

객체지ν–₯ μžλ°”μŠ€ν¬λ¦½νŠΈ#

MDN λ¬Έμ„œ

ν•¨μˆ˜ 볡슡#

ν•¨μˆ˜ν‘œν˜„μ‹μ—μ„œ κΈ°λͺ…ν•¨μˆ˜μ™€ 읡λͺ…ν•¨μˆ˜


var add = function sum(a, b) {    return a + b;};

μ—¬κΈ°μ—μ„œ sum κ°€ ν•¨μˆ˜ 이름, add 이 ν•¨μˆ˜ λ³€μˆ˜.

ν•¨μˆ˜ 이름은 μ™ΈλΆ€ μ½”λ“œμ—μ„œ μ ‘κ·Ό λΆˆκ°€. (ν•¨μˆ˜ λ‚΄λΆ€μ˜ μž¬κ·€ 호좜 or λ””λ²„κ±°μ—μ„œ ν•¨μˆ˜ ꡬ뢄을 μœ„ν•΄ μ‚¬μš©)

ν•¨μˆ˜μ„ μ–Έλ¬Έμ€ ν•¨μˆ˜ 이름과 ν•¨μˆ˜ λ³€μˆ˜κ°€ 같은 ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ μƒκ°ν•˜λ©΄ λœλ‹€


ν•¨μˆ˜ 객체의 κΈ°λ³Έ ν”„λ‘œνΌν‹°#


μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•΄μ„œ μœ„μ—μ„œ μ •μ˜ν•œ add ν•¨μˆ˜μ˜ ν”„λ‘œνΌν‹° λͺ©λ‘μ„ λ³Ό 수 μžˆλ‹€.


console.dir(add);

caller : ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ ν•¨μˆ˜μ— λŒ€ν•œ μ°Έμ‘°λ₯Ό μ €μž₯. (전역인 경우 null )


function some() {    return foo();}
function foo() {    var a = 3;    return bar();}
function bar() {    return 'caller : ' + bar.caller;}
console.log(foo(bar)); // caller : function foo(func) {...}console.log(bar()); // null (browserμ—μ„œμ˜ μ‹€ν–‰ κ²°κ³Ό)

arguments : ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬λœ μΈμžκ°’.

arguments κ°μ²΄λŠ” ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λœ μΈμˆ˜λ“€μ˜

function multiply(x, y) {    console.log(arguments);    return x * y;}
multiply(); // {}multiply(1); // { '0': 1 }multiply(1, 2); // { '0': 1, '1': 2 }multiply(1, 2, 3); // { '0': 1, '1': 2, '2': 3 }

__proto__ : μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” ν”„λ‘œν† νƒ€μž… 객체. ν•¨μˆ˜ 객체의 λΆ€λͺ¨λŠ” Function.prototype 객체

length : ν•¨μˆ˜ μ •μ˜ μ‹œ μž‘μ„±λœ λ§€κ°œλ³€μˆ˜ 갯수


function foo() {}console.log(foo.length); // 0
function bar(x) {    return x;}console.log(bar.length); // 1
function baz(x, y) {    return x * y;}console.log(baz.length); // 2

prototype : μœ„μ˜ __proto__ 와 λ‹€λ₯Έ ν”„λ‘œνΌν‹°λ‘œ 이 ν•¨μˆ˜κ°€ μƒμ„±μžλ‘œ μ‚¬μš©λ  λ•Œμ΄ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ μƒμ„±λœ 객체의 λΆ€λͺ¨ 역할을 ν•˜λŠ” ν”„λ‘œν† νƒ€μž… 객체λ₯Ό 가리킨닀.


콜백 ν•¨μˆ˜#

κ°œλ°œμžλŠ” 단지 ν•¨μˆ˜λ₯Ό λ“±λ‘ν•˜κ³  μ–΄λ–€ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆκ±°λ‚˜ νŠΉμ • μ‹œμ μ— λ„λ‹¬ν–ˆμ„ λ•Œμ‹œμŠ€ν…œμ—μ„œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜. (λŒ€ν‘œμ μœΌλ‘œ 이벀트 ν•Έλ“€λŸ¬ 처리)


function initTmap() {    var map = new Tmapv2.Map(        'map', // "map" : 지도가 ν‘œμ‹œλ  div의 id        {            center: new Tmapv2.LatLng(37.566481622437934, 126.98502302169841), // 지도 초기 μ’Œν‘œ            width: '100%', // map의 width μ„€μ •            height: '452px', // map의 height μ„€μ •            zoom: 19,        },    );    //λ‹€κ°ν˜•    var polygon = new Tmapv2.Polygon({        paths: [            new Tmapv2.LatLng(37.56661, 126.985666),            new Tmapv2.LatLng(37.566595, 126.985985),            new Tmapv2.LatLng(37.566512, 126.986071),            new Tmapv2.LatLng(37.566397, 126.985894),            new Tmapv2.LatLng(37.566395, 126.985664),        ],        fillColor: 'pink',        draggable: true,        map: map,    });}
window.onload = initTmap;

μ–΄μ œ κ³΅λΆ€ν–ˆλ˜ Tmap API, λ§ˆμ§€λ§‰μ€„μ˜ window.onload = initTmap 둜 μœ„μ—μ„œ μ •μ˜ν•œ initTmap ν•¨μˆ˜λ₯Ό onload μ‹œ(μ›Ή νŽ˜μ΄μ§€μ˜ λ‘œλ”©μ΄ λλ‚˜λŠ” μ‹œμ )에 콜백 ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•˜κ²Œ λœλ‹€.

μ΄λŸ¬ν•œ μš©λ„λ‘œ μ‚¬μš©ν•  λ•Œ, 콜백 ν•¨μˆ˜λ₯Ό κ°„λ‹¨ν•˜κ²Œ 읡λͺ… ν•¨μˆ˜λ‘œ μ‚¬μš©ν•œλ‹€.


<!DOCTYPE html><html>    <body>        <script>            window.onload = function () {                alert('This is the callback function.');            };        </script>    </body></html>

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜#

ν•¨μˆ˜λ₯Ό μ •μ˜ν•¨κ³Ό λ™μ‹œμ— λ°”λ‘œ μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜.


(function (name) {    console.log('This is the immediate function --> ' + name);})('foo');

ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ„ κ΄„ν˜Έ () 둜 감싸고 ν•¨μˆ˜κ°€ λ°”λ‘œ 호좜될 수 있게 끝에 () λ₯Ό μΆ”κ°€ν•˜κ³ , 이 κ΄„ν˜Έ μ•ˆμ— 인자λ₯Ό λ„˜κΈΈ 수 μžˆλ‹€.

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λŠ” 졜초 ν•œ 번의 μ‹€ν–‰λ§Œμ„ ν•„μš”λ‘œ ν•˜λŠ” μ΄ˆκΈ°ν™” μ½”λ“œ 뢀뢄에 μ‚¬μš©ν•  μˆ˜μžˆλ‹€. (λ³€μˆ˜λ“€μ˜ 유효 λ²”μœ„λ₯Ό 전역이 μ•„λ‹ˆλΌ λ‚΄λΆ€ ν•¨μˆ˜λ‘œ κ°μΆ”λŠ” 효과)

μ¦‰μ‹œ μ‹€ν–‰ν•¨μˆ˜λŠ” 졜초 ν•œλ²ˆλ§Œ 호좜되며 λ‹€μ‹œ ν˜ΈμΆœν•  수 μ—†λ‹€.


λ‚΄λΆ€ ν•¨μˆ˜#

ν•¨μˆ˜ 내뢀에 μ •μ˜λœ ν•¨μˆ˜.

ν΄λ‘œμ € μƒμ„±μ΄λ‚˜ μ™ΈλΆ€μ—μ„œμ˜ 접근을 막고 독립적인 헬퍼 ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©

  • λ‚΄λΆ€ ν•¨μˆ˜μ—μ„œλŠ” μžμ‹ μ„ λ‘˜λŸ¬μ‹Ό λΆ€λͺ¨ ν•¨μˆ˜μ˜ λ³€μˆ˜μ— μ ‘κ·Ό κ°€λŠ₯

  • λ‚΄λΆ€ ν•¨μˆ˜λŠ” 일반적으둜 μžμ‹ μ΄ μ •μ˜λœ λΆ€λͺ¨ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ 호좜 κ°€λŠ₯

μ™ΈλΆ€μ—μ„œ νŠΉμ • ν•¨μˆ˜ λ‚΄λΆ€μ˜ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 방법

  • λΆ€λͺ¨ ν•¨μˆ˜μ—μ„œ λ‚΄λΆ€ ν•¨μˆ˜λ₯Ό μ™ΈλΆ€λ‘œ 리턴. (ν΄λ‘œμ €)