一日 2018-1-29

Posted sanxiandoupi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一日 2018-1-29相关的知识,希望对你有一定的参考价值。

window.onload DOMContentLoaded Date赋值 清除浮动

Genertor 迭代器

基本语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
let tell = function*() {
yield "a";
yield "b";
return "c";
};

let k = tell();
console.log(k.next());
console.log(k.next());
console.log(k.next());

{ value: 'a', done: false }
{ value: 'b', done: false }
{ value: 'c', done: true }
*/
}

优雅实现Iterator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
let obj = {};
obj[Symbol.iterator] = function*() {
yield 1;
yield 2;
yield 3;
};

for (let value of obj) {
console.log(value);
}
}

1
2
3
*/

实现状态机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
// 状态机
let state = function*() {
while (1) {
yield "A";
yield "B";
yield "C";
}
};
let status = state();
console.log(status.next());
console.log(status.next());
console.log(status.next());
console.log(status.next());
console.log(status.next());
console.log(status.next());
console.log(status.next());
}
/**
{ value: 'A', done: false }
{ value: 'B', done: false }
{ value: 'C', done: false }
{ value: 'A', done: false }
{ value: 'B', done: false }
{ value: 'C', done: false }
{ value: 'A', done: false }
*/

语法糖 async await

1
2
3
4
5
6
7
8
9
{
//generator 语法糖
let state = async function() {
while (1) {
await "1";
await "2";
}
};
}

### 实现抽奖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
//抽奖
let draw = function(count) {
大专栏  一日 2018-1-29="comment">//具体的抽奖逻辑
console.log(`剩余${count}`);
};
let residue = function*(count) {
while (count > 0) {
count--;
yield draw(count);
}
};

let star = residue(5);

console.log(star.next());
console.log(star.next());
console.log(star.next());
console.log(star.next());
console.log(star.next());
console.log(star.next());
}

实现长轮询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
// 长轮询
let ajax = function*() {
yield new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({ code: 0 });
},200);
});
};
let pull = function(){
let genertaor = ajax();
let step = genertaor.next();
step.value.then(function(d){
if(d.code!=0){
setTimeout(function(){
console.log('wait')
pull()
},1000);
} else {
console.log(d);
}
})//step.value就是Promise的实例
}

pull()//执行长轮询
}

EventTarget.addEventListener()

IE8以前的浏览器只支持事件冒泡,不支持事件捕获,它也不支持addEventListener函数,不会用第三个参数来表示是冒泡还是捕获,它提供了另一个函数attachEvent。IE9就支持addEventListener

addEventListener()的第三个参数useCapture,这个参数决定要使用的事件处理程序的调用类型,只有在特定狀況下才会对事件产生影响,通常建议用false

如果参数是true,事件处理程序以捕捉模式触发;从顶层的父节点开始触发事件,从外到内传播

如果参数是false,事件处理程序以冒泡模式触发;从最内层的节点开始触发事件,逐级冒泡直到顶层节点,从内向外传播

jquery $(document).ready()window.onload的区别

Jquery中$(document).ready()的作用类似于传统javascript中的window.onload方法,不过与window.onload方法还是有区别的。

执行时间

window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()DOM结构绘制完毕后就执行,不必等到加载完毕。

编写个数不同

window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
$(document).ready()可以同时编写多个,并且都可以得到执行

简化写法

window.onload没有简化写法
$(document).ready(function(){})可以简写成$(function(){});

document.querySelector()

原生选择器

stopPropagation

阻止捕获和冒泡阶段中当前事件的进一步传播。

判断NaN

ES6

1
Number.isNaN()

Polyfill

1
2
3
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}

ES6 Array

new Array指定数组长度
Array.prototype.fill(value, start, end)用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。

1
2
new Array(3).fill(0)
// [0, 0, 0]

CSS3 nth-of-type() 选择器

匹配属于父元素的特定类型的第 N 个子元素的每个元素.
n 可以是数字、关键词或公式。

nth-child()

匹配属于其父元素的第 N 个子元素,不论元素的类型。
n 可以是数字、关键词或公式。

以上是关于一日 2018-1-29的主要内容,如果未能解决你的问题,请参考以下文章

php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期

php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期 转

一日一技:Python中的timeit()方法

一日一技:不使用 try...except 掩盖一些已知异常

编译器一日一练(DIY系列之中间代码生成)

编译器一日一练(DIY系列之中间代码生成)