Skip to content

Commit c98d854

Browse files
committed
看书练习备忘
1 parent 6527f45 commit c98d854

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed
File renamed without changes.

memo/分时函数.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
1-
var timeChunk = function (ary, fn, count) {
1+
var timeChunk = function (ary, fn, count) { // 参数分别是:需处理的数据数组,处理数据的函数体,分几次处理
22

3-
var obj,
4-
t;
3+
var obj, // 需处理的数组
4+
t; // 定时器
55

66
var len = ary.length;
77

88
var start = function () {
9-
for (var i = 0; i < Math.min(count || 1, ary.length); i++) {
9+
for (var i = 0; i < Math.min(count || 1, ary.length); i++) { // 直到i被执行8次or执行完最后几次
10+
11+
// 每次拿一个值进行函数处理,并推出这个值.
1012
obj = ary.shift();
1113
fn(obj);
1214
}
1315
};
1416

1517
return function () {
1618
t = setInterval(function () {
19+
20+
// 没有要参数直接跳出
1721
if (len === 0) {
1822
return clearInterval(t);
1923
}
24+
25+
// 执行批量处理函数
2026
start();
27+
2128
}, 200);
2229
};
2330

memo/通用惰性单例.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//通用惰性单例代码
2+
var getSingle = function (fn) {
3+
var result;
4+
return function () {
5+
return result || (result = fn.apply(this, arguments));
6+
}
7+
};
8+
9+
//实例:创建唯一的iframe
10+
var createSingleIframe = getSingle(function () {
11+
var iframe = document.createElement('iframe');
12+
document.body.appendChild(iframe);
13+
return iframe;
14+
});
15+
16+
document.getElementById('loginBtn').onclick = function () {
17+
var loginLayer = createSingleIframe();
18+
loginLayer.src = 'http://www.qian360.com';
19+
};
20+
21+
//实例:元素只绑定一次事件
22+
var bindEvent = getSingle(function () {
23+
document.getElementById('div1').onclick = function () {
24+
alert('click');
25+
};
26+
27+
/*
28+
* 必须给出返回值
29+
* 惰性单例根据这个返回值判断是否已经执行函数体
30+
* */
31+
return false;
32+
});
33+
34+
var render = function () {
35+
console.log('开始渲染列表');
36+
bindEvent();
37+
};
38+
39+
render();
40+
render();
41+
render();

0 commit comments

Comments
 (0)