为了账号安全,请及时绑定邮箱和手机立即绑定

关于jQuery插件扩展

关于jQuery插件扩展

米脂 2018-09-11 09:09:24
问题一:扩展jQuery对象时,这四种方式那个适用性更强一些问题二:下面的代码段②是什么意思,做什么用,跟注册全局方法$.extend有什么关联问题三:现在在写一个表格插件,包括数据渲染和若干方法,现在还没有写监听事件,感觉一团糟,有什么好的思路,或者简单的开源实现(github项目)可以参考(尽量简单),希望大家给个思路也好,谢谢!!!
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

问题一:
我倾向于第四种写法 用匿名函数把插件包起来
好处是:1.避免其它插件也用了 $ 做关键字;2.避免插件内部方法污染全局

方式一我不知道好坏
方式二 $ 可能会被其他同名变量污染
方式三和方式一类似 包了一层自执行函数 但既然包了一层并把jQuery作为参数传递了 内部就可以直接写 $ 了
$.fn.methodName = function() {} 和 $.fn.extend({ methodName: function() {} }) 的好坏我不是很清楚

问题二:
$.extend 方法是合并对象 用于将传入的参数覆盖默认配置

var a = { name: 'a' };

var b = { name: 'b', age: 2 };

var c = $.extend(a, b); // 把 b 对象合并到 a 对象

console.log(a); // { name: 'b', age: 2 };

console.log(b); // { name: 'b', age: 2 };

console.log(c); // 最终配置 { name: 'b', age: 2 };

// 不推荐这么写 这么写会把 a 也修改了 有时候还需要使用到原始配置


// 推荐这种写法

var a = { name: 'a' };

var b = { name: 'b', age: 2 };

var c = $.extend({}, a, b); // 把 b 和 a 对象合并到 {} 对象 保留 a 对象

console.log(a); // { name: 'a' };

console.log(b); // { name: 'b', age: 2 };

console.log(c); // 最终配置 { name: 'b', age: 2 };


查看完整回答
反对 回复 2018-10-06
  • 1 回答
  • 0 关注
  • 644 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信