是否有一个纯javascript等同于jQuery' $ .fn.extend?

时间:2015-07-30 09:13:17

标签: javascript jquery

在jQuery中我这样做:

$.fn.extend({
   hello: function() {console.log(this + ' says hello world.')}
});

然后

$('div').hello();

我可以在纯JavaScript中执行此操作而不加载整个jQuery吗?

2 个答案:

答案 0 :(得分:1)

嗯,从技术上讲,你可以这样做:

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包装器,尽管你当然可以制作这样的包装器。

答案 1 :(得分:0)

在Javascript中,您也可以通过连接 HTML元素本机函数的原型来扩展选择器函数。例如,我将使用以下代码解决您的问题:

HTMLDivElement.prototype.hello = function()
  {
    console.log(this+" says hello world.");
  }
document.querySelector('div').hello()

对于Anchor元素,我可以这样做:

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