理解jquery的$.extend()、$.fn和$.fn.extend()

156 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

2.jQuery.extend(object)

为jQuery类添加类方法,可以理解为添加静态方法。如:·

jQuery.extend({ min: function(a, b) { return a < b ? a : b; }, max: function(a, b) { return a > b ? a : b; } }); jQuery.min(2,3); //  2 jQuery.max(4,5); //  5

3.Objectj Query.extend( target, object1, [objectN])

用一个或多个其他对象来扩展一个对象,返回被扩展的对象[·]

var settings = { validate: false, limit: 5, name: "foo" }; var options = { validate: true, name: "bar" }; jQuery.extend(settings, options); 结果:settings == { validate: true, limit: 5, name: "bar" }

4.jQuery.fn.extend(object);

对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做 .fn.extend({ alertWhileClick:function() { (this).click(function(){ alert((this).val()); }); } }); ("#input1").alertWhileClick();

数组去重

var arr = [1,2,3,3,1,4]; [...new Set(arr)]; // [1, 2, 3, 4] Array.from(new Set(arr)); // [1, 2, 3, 4] [...new Set('ababbc')].join(''); // "abc" 字符串去重 new Set('ice doughnut'); //Set(11) {"i", "c", "e", " ", "d", …}

并集

var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var union = new Set([...a, ...b]); // {1, 2, 3, 4}

交集

var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

差集

var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var difference = new Set([...a].filter(x => !b.has(x))); // {1}

2.实例:

代码一

var arr = ['a', 'b', 'c']

var it = arrSymbol.iterator

    console.log('it', it)

    for (let i = 0; i <= arr.length; i++) {

      console.log('it.next()==>', it.next())

    }

结果

代码二

var arr = ['a', 'b', 'c']

    var iterator = arr.entries()

    console.log('iterator', iterator)

    for (const [index, value] of arr.entries()) {

      console.log('value===>', value, index)

      console.log('iterator.next', iterator.next().value)

      console.log('whether', Array.isArray([index, value]))

    }

结果

代码三 break 跳出 for of 循环

var arr = [{

      name: 'a'

    }, {

      name: 'b'

    }, {

      name: 'c'

    }]

    var iterator = arr.entries()

    console.log('iterator', iterator)

    for (const [index, value] of arr.entries()) {

      console.log('value===>', value, index)

      if (value.name === 'b') break

      console.log('iterator.next', iterator.next().value)

    }

结果