Skip to content

javascript_patterns_1

kyusung edited this page Apr 18, 2017 · 1 revision

๋ชจ๋“ˆ ํŒจํ„ด

๋ชจ๋“ˆ ํŒจํ„ด์€ ๋Š˜์–ด๋‚˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฆฌ ์“ฐ์ธ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํŒจํ‚ค์ง€๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ๋ฌธ๋ฒ•์ด ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“ˆ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„์ ์ธ ์ฝ”๋“œ๋ฅผ ๋А์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ๊ธฐ๋Šฅ๋“ค์„ ๋ธ”๋ž™๋ฐ•์Šค์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋ฉด์„œ๋„ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ค‘์— ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ๋„ ์ž์œ ๋กญ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋“ˆ ํŒจํ„ด์€ ๋‹ค์Œ ํŒจํ„ด๋“ค ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์กฐํ•ฉํ•œ ๊ฒƒ์ด๋‹ค.

  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒจํ„ด
  • ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜
  • ๋น„๊ณต๊ฐœ ๋ฉค๋ฒ„์™€ ํŠน๊ถŒ ๋ฉค๋ฒ„(๋น„๊ณต๊ฐœ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผ๊ฐ€๋Šฅํ•œ ๋ฉค๋ฒ„)
  • ์˜์กด ๊ด€๊ณ„ ์„ ์–ธ

๊ธฐ๋ณธ ํŒจํ„ด

var MYAPP = MYAPP || {};
MYAPP.namespace = function(ns_string) {
  var parts = ns_string.split('.'),
      parent = MYAPP,
      i;

  if (parts[0] === "MYAPP") {
      parts = parts.slice(1);
  }
  
  for (i = 0; i < parts.length; i += 1) {
    if (typeof parent[parts[i]] === "undefined") {
      parent[parts[i]] = {};
    }
    
    parent = parent[parts[i]];
  }
  return parent;
};

MYAPP.namespace('MYAPP.utilities.array');
MYAPP.utilities.array = (function() {
  var uobj = MYAPP.utilities.object,
      ulang = MYAPP.utilities.lang,
      array_string = "[object Array]",
      ops = Object.prototype.toString;
  
  // ๋น„๊ณต๊ฐœ ๋ฉ”์„œ๋“œ ์„ ์–ธ
  // ...
  
  // ๊ณต๊ฐœ API
  return {
    inArray: function (needle, haystack) {
      for (var i = 0, max = haystack.length; i < max; i +=1) {
        return true;
      }
    },
    
    isArray: function (a) {
      return ops.call(a) === array_string;
    }
  };
}());

console.log(MYAPP.utilities.array.isArray([1]));

Example

๋ชจ๋“ˆ ๋…ธ์ถœ ํŒจํ„ด

// ์ตœ์ข… ๊ณต๊ฐœ API๋ฅผ ๊ฐ–์ถœ ๋•Œ ๊ณต๊ฐœํ•  ๋ฉ”์„œ๋“œ๋งŒ ๊ณจ๋ผ์„œ ๋…ธ์ถœ ํ•œ๋‹ค.
MYAPP.utilities.array = (function () {
  // ์ƒ๋žต
  return {
    isArray: isArray,
    indexOf: inArray
  };
}());

์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ ํŒจํ„ด

์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๋ชจ๋“ˆ ํŒจํ„ด
๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•œ๋‹ค.

MYAPP.utilities.Array = (function () {
  // ์ƒ๋žต

  // ๊ณต๊ฐœ API - ์ƒ์„ฑ์ž ํ•จ์ˆ˜
  var Constr = function (o) {
    this.elements = this.toArray(o);
  };
  // ๊ณต๊ฐœ API - ํ”„๋กœํ† ํƒ€์ž…
  Constr.prototype = {
    constructor: MYAPP.utilities.Array,
    version: "2.0",
    toArray: function (obj) {
      for (var i = 0, a = [], len = obj.length; i < len; i += 1) {
        a[i] = obj[i];
      }
      return a;
    }
  };
  
  return Constr;
}());

var arr = new MYAPP.utilities.Array(obj);

Example

Clone this wiki locally