jQuery学习 发表于 2018-06-06 | 分类于 代码片段 , javascript | 评论数: 0 | 阅读次数: | 阅读次数: 链式调用12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758var _ = function (selector) { return new _.fn.init(selector)}_.fn = _.prototype = { constructor: _, // 强化构造器 init: function (selector, context) { // console.log(this.constructor) context = context || document var dom = context.querySelectorAll(selector) // 将获取的元素作为当前对象的属性值保存 var len = dom.length for (; i < len; i++) { this[i] = dom[i] } this.length = len // 校正 length 属性 return this // 返回当前对象 }, size: function () { return this.length }, // 增强数组,使 _('ID') 返回的结果看起来更像一个数组 push: [].push, sort: [].sort, splice: [].splice}_.fn.init.prototype = _.fn // 强化构造器,使原型链 __proto__ 指向 _ 对象// 对象拓展_.extend = _.fn.extend = function () { var i = 1 // 拓展对象从第二个参数算起 var len = arguments.length // 获取参数长度 var target = arguments[0] // 第一个参数为源对象 var j // 拓展对象中的属性 // 如果只有一个参数 if (i == len) { target = this // 源对象为当前对象 i-- // i 从 0 计算 } // 遍历参数中的拓展对象 for (; i < len; i++) { for (j in arguments[i]) { target[j] = arguments[i][j]// 拓展对象中的属性 } } return target // 返回源对象}// 测试用例console.log(_('ID'))console.log(_('ID').size());_.extend(_.fn, { version: '1.0' })console.log(_('ID').version)_.fn.extend({ getVersion: function () { return this.version } })console.log(_('ID').getVersion()) 坚持原创技术分享,您的支持将鼓励我继续创作! 打赏 微信支付 支付宝 本文作者: Leo 本文链接: https://xuebin.me/posts/7a95906a.html 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!