美文网首页
js小技巧搜集

js小技巧搜集

作者: 一只环环环 | 来源:发表于2017-02-27 17:44 被阅读9次
1.比较两个对象是否相等
function isEqual(a, b) {
    var aProps = Object.getOwnPropertyNames(a),
        bProps = Object.getOwnPropertyNames(b);
    //1.先比较属性的个数是否相等
    if (aProps.length != bProps.length) {
        return false;
    }
    //2.属性个数相等,再比较每个属性的值是否相等
    for (var i = 0; i < aProps.length; i++) {
        var propName = aProps[i];
        
        if (a[propName] !== b[propName]) {
            return false;
        }
    }
    return true;
}
2.bind、call、apply
  • bind:Function.prototype.bind(context),用于在不调用函数的情况下,将this固定在context上,并返回一个有新的this值的函数。
    用法:
var moneyGorden = {
        name:"gorden",
        money:1000,
        addMoney:function (x) {
            this.money += x;
            console.log(this.name+" has "+this.money) ;
        }
    };
    var moneyJack = {
        name:"jack",
        money:100
    };
    //直接调用
    moneyGorden.addMoney(100);//gorden has 1100
    
    //使用bind
    var newFuntionUseBind = moneyGorden.addMoney.bind(moneyJack);
    newFuntionUseBind(100);//jack has 200
    
    //可以看到bind返回的是一个新函数,原函数不受影响
    moneyGorden.addMoney(100);//gorden has 1200
  • callapply: 与bind不同的是,这两个方法直接修改函数运行时的this值,并且可以给运行的函数传递参数,以参数列表的形式跟在context后面。他们两的不同在于参数传递,call跟一个参数列表,将参数全部列出来,而apply跟一个参数数组。可以记忆为 apply、array都以"a"开头,所以apply跟一个array。

  • 重写bind方法

Function.prototype.bind = Function.prototype.bind || function(context){
      var self = this;
      return function(){
      return self.apply(context, arguments);
    };
}
3. this值的总结 原文在这里
  1. 在全局作用域或者一个匿名函数中,this指向window对象
  2. 严格模式下,在一个立即执行函数(IIFE)中thisundifined,需要将window作为参数传入。
  3. 当在一个对象的环境(context)中执行函数市,this的值就指向这个对象
  4. setTimeOut中,this指向全局对象
  5. 使用构造函数创建一个对象时(使用new关键字),this指向这个新创建的对象
  6. 使用bindcall、apply指定this的值
  7. 在dom事件处理的handler中,this指向触发事件的元素

相关文章

  • js小技巧搜集

    1.比较两个对象是否相等 2.bind、call、apply bind:Function.prototype.bi...

  • css小技巧搜集

    1.移动端字体大小适配 利用媒体查询器设置根元素的字体大小,并在开发时使用rem作为单位 2.sticky foo...

  • js 小技巧

    #23 - 转换数值的快速方法 将字符串转换为数字是非常常见的。最简单和最快的方式来实现,将使用+(加)算法。 你...

  • JS小技巧

    Alert() 切断加载;innerHTML :获取双闭合标签里面的内容。(识别标签)innerHTML :获取双...

  • JS: 小技巧

    1,强制转换成 boolean 值: !!(变量) 有时候变量虽然会被判断为真假,但是两次取反之后,会转换为真正的...

  • js小技巧

    1. 获取数组中的最大值 2. 获取数组中的最小值 3. 测量一个JavaScript代码块性能的技巧 4. 字符...

  • js小技巧

    1.!!来转换成boolean 有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回t...

  • js小技巧

    1、随机字母数字字符串 2、随机颜色 3、清空一个数组 4、洗牌 5、字符串安全连接 6、双波浪线“~~”操作符 ...

  • JS小技巧

    ** 1、 生成随机颜色 ** **2、 原生js获取相关参数 ** **3、横竖屏刷新页面 ** 4、判断是否为...

  • js 小技巧

    1、取整同时转成数值型: console.log('10.567890' | 0);// 结果: 10con...

网友评论

      本文标题:js小技巧搜集

      本文链接:https://www.haomeiwen.com/subject/xcxzwttx.html