文章目錄

總結一下,哪邊可能會有常見的scope問題和closure用法。

###new class

這個類型就是,一般最最常使用,非使用不可的情況了。有在用什摸js的class模型的
人類,應該還蠻清楚的。

new class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var _person = function(params) {
var _name = params.name,
_age = params.age;
this.getName = function() {
return _name;
};
this.getAge = function() {
return _age;
};
return this;
};
var Mary = new _person({
name: "Mary",
age: 15
});
console.log("Mary " + Mary.getAge());

###event

event的情況,也還蠻常用到的啦~通常是要偷懶的時候,會把一些公用函式提出來,
然後,就可以方便拿來用,不用定義了。

event
1
2
3
4
5
6
7
var count = 0;
$btn1.click(function() {
console.log(++count);
});
$btn2.click(function() {
console.log(++count);
});

###ajax

ajax,就更常見了咧~w 不用的話,有時候真的不知道該怎摸寫下去才是。關於更詳
細的callback相關的東西,打算在之後做個…詳解(?)。這邊就跳過好了~

ajax
1
2
3
4
5
6
7
var callback = function() {
console.log("callback");
};
$.post(_url, params)
.done(function() {
callback();
});

###curry

curry的內容,之前就講過了啦~在這一篇的第1段code
它的精神其實就是說,我可以預先塞一些特定的資料進去。而其實…會使用closure
的情況,大概也就是那樣,我需要先設定好某些訊息

curry
1
2
3
4
5
6
7
8
9
10
11
var _getFunc = function(a) {
return function(b) {
return a + b;
};
};
var _add2 = _getFunc(2),
_add10000 = getFunc(10000);
console.log(_add2(5));
console.log(_add10000(5));

當然,curry也有他的算是…. 一般式啦~大概,有可能…是長下面這樣~(我有點忘了,
很久沒刻了..|||) 有興趣的,應該可以瞧瞧prototypejs
這個還蠻悠久的framwork,還蠻有趣的,印象中…有很多有趣的寫法。下面那段code,
有些寫法是從裡面學來的。

curry2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var _curry = function(fn, _self, params) {
var _slice = Array.prototype.slice,
args = _slice.apply(arguments, [2]);
return function() {
return fn.apply(_self, args.concat(_slice.apply(arguments)));
};
};
var fn = _curry(function(params, x) {
return params.coef1 * x * x + params.coef2 * x + params.coef3;
}, self, {
coef1: 5,
coef2: 3,
coef3: -7
});
console.log(fn(10));

###總結

在正常的情況下,以我來說,應該就只有上面那幾種情況會用到喇~ @ 3@ (其他沒提到的,大概…
都被我規在上面類型的喇~沒有漏掉的話…)

所以,如果正常的使用,其實,頂多包個1層或2層,如果,尼沒事包超過3層,ㄜ…久了就哉系阿,
就像一般寫structure language,全域變數是不建議使用的一樣,『用的好,讓尼上天堂;用不好,
就下地獄吧尼』

文章目錄