-
Notifications
You must be signed in to change notification settings - Fork 0
javascript_jquery_basic_3_3
this๋?
this๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ด ์๋ ์์ฑ
| this๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒฝ์ฐ | this ๊ฐ |
|---|---|
| ์ผ๋ฐ ํจ์์์์ this | window ๊ฐ์ฒด |
| ์ค์ฒฉ ํจ์์์์ this | window ๊ฐ์ฒด |
| ์ด๋ฒคํธ์์ this | ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ๊ฐ์ฒด |
| ๋ฉ์๋์์ this | ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ์ฒด |
| ๋ฉ์๋ ๋ด๋ถ์ ์ค์ฒฉํจ์์์ this | window ๊ฐ์ฒด |
๋ฉ์๋ ๋ด๋ถ์ ์ค์ฒฉํจ์์์ this
๋ฉ์๋ ๋ด๋ถ์ ์ค์ฒฉํจ์์์์ ๊ฒฝ์ฐ this๋ฅผ ์ ์ฅํ์ง ์์ผ๋ฉด window ๊ฐ์ฒด๊ฐ this๊ฐ ๋๋ค.
| ๊ตฌ๋ถ | ํจ์์ด๋ฆ() | new ํจ์์ด๋ฆ() |
|---|---|---|
| ํด์ | ์ผ๋ฐ ํจ์ ํธ์ถํ๋ ๊ตฌ๋ฌธ | ํน์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ตฌ๋ฌธ |
| this ๋ด์ฉ | window ๊ฐ์ฒด | ์ธ์คํด์ค |
์๋ฐ์คํฌ๋ฆฝํธ ์์ฑ์ ํจํด - new๋ฅผ ๊ฐ์ ํ๋ ํจํด
Auto-instantiation in Effective JavaScript
ํจ์ ๋จ์ ์ฝ๋ฉ
- ํจ์ ํธ์ถ๋ง๋ค ํจ์๊ฐ ์ค๋ณตํด์ ๋ง๋ค์ด์ง๋ ๋จ์ ์ด ์๋ค.
- ์ธ๋ถ์์ ๋ด๋ถ ์์ฑ๊ณผ ํจ์๋ฅผ ์ ๊ทผํ ์ ์๋ค.
ํจ์ ๋จ์ ์ฝ๋ฉ2
- ํน์ ๋ฉ์๋๋ ํ๋กํผํฐ๋ฅผ ๋ฐํํ์ฌ ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ
ํด๋์ค ๋จ์ ์ฝ๋ฉ(ํ๋กํ ํ์ ๊ธฐ๋ฐ)
- ํ๋กํ ํ์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค์์ ๋ฉ์๋๋ฅผ ๊ณต์ ํด์ ์ฌ์ฉํ๋ค.
- ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ๊ตฌ์กฐ๊ฐ ๋๋ค.
์ธ์คํด์ค ํ๋กํผํฐ/๋ฉ์๋
๊ฐ์ฒด์ ์ํ ์ ๋ณด๋ฅผ ๋ด๊ฑฐ๋ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ (์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ)
ํด๋์ค ํ๋กํผํฐ/๋ฉ์๋
๋
๋ฆฝ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ ์ ํธ๋ฆฌํฐ์ฑ ์ ๋ณด์ ๊ธฐ๋ฅ์ ๊ตฌํ ํ ๋ ์ฌ์ฉ (์ ํธ๋ฆฌํฐ๋ก ์ฌ์ฉ)
// ์์ ํ ์ ํธ๋ฆฌํฐ ํด๋์ค ๋ง๋ค๊ธฐ
// 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 || {}));