Skip to content

javascript_jquery_basic_3_3

KyusungDev edited this page Apr 28, 2017 · 4 revisions

ํด๋ž˜์Šค ์ค‘๊ธ‰

this์˜ ์ •์ฒด

this๋ž€?
this๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์†์„ฑ

this๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒฝ์šฐ this ๊ฐ’
์ผ๋ฐ˜ ํ•จ์ˆ˜์—์„œ์˜ this window ๊ฐ์ฒด
์ค‘์ฒฉ ํ•จ์ˆ˜์—์„œ์˜ this window ๊ฐ์ฒด
์ด๋ฒคํŠธ์—์„œ this ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฐ์ฒด
๋ฉ”์„œ๋“œ์—์„œ this ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด
๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์˜ ์ค‘์ฒฉํ•จ์ˆ˜์—์„œ this window ๊ฐ์ฒด

๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์˜ ์ค‘์ฒฉํ•จ์ˆ˜์—์„œ this

๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์˜ ์ค‘์ฒฉํ•จ์ˆ˜์—์„œ์˜ ๊ฒฝ์šฐ this๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฉด window ๊ฐ์ฒด๊ฐ€ this๊ฐ€ ๋œ๋‹ค.

ํ•จ์ˆ˜ํ˜ธ์ถœ() vs. new ํ•จ์ˆ˜ํ˜ธ์ถœ()

๊ตฌ๋ถ„ ํ•จ์ˆ˜์ด๋ฆ„() new ํ•จ์ˆ˜์ด๋ฆ„()
ํ•ด์„ ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๋Š” ๊ตฌ๋ฌธ ํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ๋ฌธ
this ๋‚ด์šฉ window ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ์ž ํŒจํ„ด - new๋ฅผ ๊ฐ•์ œํ•˜๋Š” ํŒจํ„ด
Auto-instantiation in Effective JavaScript

ํ•จ์ˆ˜๋‹จ์œ„์ฝ”๋”ฉ vs. ํด๋ž˜์Šค ๋‹จ์œ„ ์ฝ”๋”ฉ

ํ•จ์ˆ˜ ๋‹จ์œ„ ์ฝ”๋”ฉ

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ๋งˆ๋‹ค ํ•จ์ˆ˜๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
  • ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€ ์†์„ฑ๊ณผ ํ•จ์ˆ˜๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

ํ•จ์ˆ˜ ๋‹จ์œ„ ์ฝ”๋”ฉ2

  • ํŠน์ • ๋ฉ”์†Œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•

ํด๋ž˜์Šค ๋‹จ์œ„ ์ฝ”๋”ฉ(ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜)

  • ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.

์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ vs. ํด๋ž˜์Šค ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ

์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ/๋ฉ”์„œ๋“œ
๊ฐ์ฒด์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋‹ด๊ฑฐ๋‚˜ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ (์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ)

ํด๋ž˜์Šค ํ”„๋กœํผํ‹ฐ/๋ฉ”์„œ๋“œ
๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์„ฑ ์ •๋ณด์™€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ํ•  ๋–„ ์‚ฌ์šฉ (์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ์‚ฌ์šฉ)

// ์•ˆ์ „ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ
// http://stackoverflow.com/questions/35537760/utility-class-for-functions
var Utils = (function(){
 return {
    test: function () { },
    test1: function () { }
 }
}());

// https://gualtierotesta.wordpress.com/2013/06/25/utility-functions-in-javascript/
function Util () {}
 
Util.read = function (sel) {
    return jQuery(sel).val();
};
 
Util.write = function (sel, val) {
    jQuery(sel).val(val);
};

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•˜์ž

ํŒจํ‚ค์ง€

์—ฐ๊ด€ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ฌถ์„ ๋•Œ ์‚ฌ์šฉ, ์˜ค๋ธŒ์ ํŠธ ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•ด์„œ ์„ ์–ธ

// ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ฑ๊ฒฉ์˜ ํด๋ž˜์Šค ๊ทธ๋ฃน
var ddan = {};
ddan.utils = {};
ddan.utils.String = function(){};
ddan.utils.Format = function(){};

// UI ์ฝ˜ํŠธ๋กค ํด๋ž˜์Šค ๊ทธ๋ฃน
var ddan
ddan.ui = {};
ddan.ui.ImageSilder = function() {};
ddan.ui.tabMenu = function() {};
ddan.ui.tabPanel = function() {};
// http://stackoverflow.com/questions/2504568/javascript-namespace-declaration
// ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
var Namespace = {};
Namespace.MyClass = (function () {
  // ...
}());

// ๋ณต์žกํ•˜์ง€๋งŒ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
var Namespace = (function (Namespace) {
   Namespace.MyClass = function() {

       var privateMember = "private";
       function myPrivateMethod(param) {
         alert(param || privateMember);
       };

       MyClass.MyPublicMember = "public";
       MyClass.MyPublicMethod = function (param) {
          myPrivateMethod(param);
       };
   }
   return Namespace
}(Namespace || {}));

๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒจํ„ด ๋ฐ”๋กœ ์•Œ๊ธฐ

Clone this wiki locally