js杂乱整理

不断更新 总结一些js的小知识点

jquery attr与prop的区别

attr获取dom中自定义的属性
prop获取dom中固有默认的属性(input中的checked)

js自动监听input值改变的事件

$('#username').bind('input propertychange', function() {  
    $('#result').html($(this).val().length + ' characters');  
}); 

js中的select

 $('#selectn').on('change',function(){
     console.log($(this).val())
     console.log($(this).find('option:checked').text())
 })

call与apply

解决下面几个问题
1.apply和call的区别在哪里

2.什么情况下用apply,什么情况下用call

3.apply的巧妙用法(一般在什么情况下可以使用apply)

apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args–>arguments)

call:和apply的意思一样,只不过是参数列表不一样.

apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表
[1,2,3] → 1,2,3

例子:1 获取一个数组中最大的值
Math.max(a,b) Math.max 方法的参数不能是数组但是支持参数列表
Math.max.apply(this,[1,2,3,4])

例子:2 将一个数组加到另一个数组后面

var a = [1,2,3]
var b = [4,5,6]
a.push.apply(a,b)

结果

Async/Await

例子:

var sleep = function(){
  return new Promise(function(resolve,reject){
    setTimeout(function(){
      resolve()
    },5000)
  })
}

var start = async function(){
    console.log('开始');
    await sleep();
    console.log('结束');
}

start()
var sleep = function (time) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            // 模拟出错了,返回 ‘error’
            reject('error');
        }, time);
    })
};

控制台先输出‘开始’隔了5s后输出 输出‘结束’

await只能在async函数中运行
例子:

var start = async function () {
    try {
        console.log('start');
        var data =[1,2,3]
for(var v of data) {
    console.log(`当前是第${v}次等待..`);
    await sleep(1000); // 正确, for循环的上下文还在async函数中
}

        // 所以以下代码不会被执行了
        console.log('end');
    } catch (err) {
        console.log(err); // 这里捕捉到错误 `error`
    }
};
start()

每隔5s输出

start
当前是第1次等待..
当前是第2次等待..
当前是第3次等待..
end

reduce reduceRight运用

var arr = [0,1,2,3,4];
arr.reduce(function (preValue,curValue,index,array) {
  return preValue+curValue
})

结果输出10,reduceRight与reduce作用一样 只是从后面累加
map 也是reduce的一种特例

火狐 focus bug

给focus上层加一个setTimeout(fn,0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值