向DOM元素添加新属性与扩展DOM元素原型
Adding new attributes to DOM elements vs extending DOM elements prototype
两者之间有什么区别?
假设你有
var e = document.getElementById("myelement")
我看到一个类似的例子:
e.prototype.print = function(){
if(this.nodeType==3)
console.log(this.nodeText);
}
vs向DOM元素添加新属性示例:
e.accessed = true;
在其中您将被访问的属性添加到元素。
这两个例子似乎都在向元素添加一个新的属性/属性,只是前者将属性添加到原型中,这样所有继承原型的对象都会获得新的属性?
所以,如果myelement是从它的原型继承的唯一对象,那么下面的例子会与我发布的第一个例子等效吗?
e.print=function(){
if(this.nodeType==3)
console.log(this.nodeText);
}
尝试使用document.registerElement
。参见自定义元素,自定义元素介绍
var proto = Object.create(HTMLDivElement.prototype);
proto.print = function() {
console.log(this.nodeName, this.textContent);
return this
}
document.registerElement("x-component", {
extends: "div",
prototype: proto
});
var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++) {
if ("print" in divs[i]) {
console.log(divs[i].print())
}
}
document.registerElement("x-foo", {
prototype: Object.create(HTMLParagraphElement.prototype, {
print: {
get: function() {
console.log(this.nodeName, this.textContent)
return this;
},
enumerable: true,
configurable: true
}
//,
// specify more members for your prototype.
}),
extends: "p"
});
var foo = document.createElement("p", "x-foo");
foo.innerHTML = 123;
document.body.appendChild(foo);
console.log(foo.print);
<div is="x-component">abc</div>
<div>def</div>
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 通过AJAX侦听向DOM添加某些元素
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- Selenium无法在浏览器DOM中定位元素
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- 从dom中删除任何元素后,Touchmove事件停止触发
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- 找到元素DOM的根节点(阴影或光)的最佳方法是什么?
- 在querySelector:如何获得第一个和最后一个元素?dom中使用的遍历顺序