是否有一个纯Javascript等价于jQuery's $.fn.extend
Is there a pure Javascript equivalent to jQuery's $.fn.extend?
在jQuery中我这样做:
$.fn.extend({
hello: function() {console.log(this + ' says hello world.')}
});
然后
$('div').hello();
我能做到这一点在纯javascript不加载整个jQuery只是为了?
技术上你可以这样做:
function extendingQuerySelector(selector, extension) {
var el = document.querySelector(selector);
for(var key in extension) {
if(extension.hasOwnProperty(key)) {
el[key] = extension[key];
}
}
return el;
}
虽然扩展基本DOM对象似乎不是一个好主意。这里没有jQuery包装器,当然您可以制作这样一个包装器。
在Javascript中,你也可以通过连接到HTML元素原生函数的原型来扩展选择器函数。例如,我将使用下面的代码来解决您的问题:
HTMLDivElement.prototype.hello = function()
{
console.log(this+" says hello world.");
}
document.querySelector('div').hello()
对于锚元素,我将这样做:
HTMLAnchorElement.prototype.my_func=function()
{
console.log(this.nodeName);
}
document.querySelector("a").my_func()
以上代码将在浏览器控制台中打印所选锚元素的节点名称。您可以使用纯Javascript探索其他HTML选择器函数。
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement相关文章:
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- 如何覆盖主干中的extend方法
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- JS-fn()中返回后方括号的含义{return{}[]}
- 如何在使用Ractive.extend()时引用DOM元素
- 使用带有自定义对象作为属性的jQuery.extend时出现意外行为
- 通过fn.apply或fn.bind将函数传递给setTimeout
- jQuery extend 函数是怎么回事
- 我应该只在指令的链接 fn 中进行 DOM 操作吗?
- 理解模态.js中复杂的 $.extend
- 如何将 fn 去抖动实现到 jQuery keyup 事件中
- Extending jQuery.fn.method
- 使用 YUI 3 跟踪 jQuery.extend
- 定义CommonJS模块时,fn.call(this)与fn()的对比
- 我什么时候应该在jQuery中使用$.fn.extend()
- 使用 fn.extend() 和 Google 闭包编译器扩展 jQuery
- 防止jQuery.fn.extend多次触发
- Jquery fn.extend()返回和调用对象中的值
- 是否有一个纯Javascript等价于jQuery's $.fn.extend
- jQuery.extend and jQuery.fn.extend