Js:创建继承自某个 js 类的 html 元素
Js: create html element that inherits from some js class
我有js类(如果js支持类是这个问题的题外话):
var MyClass=function(){
....
}
MyClass.prototype.someMethod=function(){
...
}
我想创建将继承MyClass的html元素(例如div)。例如,对于自定义元素,我可以使用以下内容:
var SimpleTableClass = document.registerElement('simple-table',{prototype: new MyClass()});
simpleTable=new SimpleTableClass();
我唯一的想法是:
var newDiv = document.createElement("div");
newDiv.prototype=new MyClass();
但我不知道这是否是安全的方法,因为我将覆盖所有 html 元素原型。
如果可能的话,我不仅想获取html元素,还想获得其构造函数(类),如SimpleTableClass的示例所示。
我唯一的想法是:
var newDiv = document.createElement("div"); newDiv.prototype=new MyClass();
但我不知道这是否是安全的方法,因为我将覆盖所有 html 元素原型。
比它是否安全更重要的是,它毫无意义。它在div
上创建一个prototype
属性,该属性不会从MyClass
实例中为其提供任何方法。
您可以使用 MyClass.prototype
(或 MyClass
的实例)中的所有方法扩展元素,方法是复制它们对元素的引用。许多库提供了一个通常称为 extend
的函数来做到这一点。(这里是jQuery的,这里是下划线的。这通常称为"混合"。那里没有继承,你只是在抓取参考。除了关于 expando 属性命名冲突的通常警告之外,它足够安全。为了尽量减少命名冲突的几率,您可以在方法前面加上一些前缀。
例如:
var MyStuff = {
myDoThis: function() {
// ...
},
myTurnGreen: function() {
this.style.color = "green";
}
// ...and so on...
};
var div = document.createElement('div');
div.innerHTML = "This is the text of my div";
document.body.appendChild(div);
Object.keys(MyStuff).forEach(function(key) {
div[key] = MyStuff[key];
});
setTimeout(function() {
div.myTurnGreen();
}, 500);
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- 如何在hover js上的3个类之间切换
- HTML&JS-如何修改CSS类的属性
- 使用纯 Js 或 jquery 获取相同的 64 个类的 CSS 属性值
- 如何在 Angular JS 中的按钮单击上添加类
- js中的模块和php中的类之间有什么区别
- 为什么JS类内部声明的变量是“未定义的”
- 创建Crafty JS实体的类(类的类?)
- 可以重命名与其他类上的函数同名的 JS 函数的 IDE
- 是否有任何好的下划线.js替代方案来扩展核心 js 类
- 什么是好的节点.js类 Sidekiq 作业系统
- Js:创建继承自某个 js 类的 html 元素
- Twitter-bootstrap JS切换公共类的所有元素的所有折叠
- 如何使用 js/css 禁用特定类的 选择
- JS类的多个实例
- 什么时候是从html标记中删除无js类的最佳时机
- 更新JS类的属性基于其他属性
- 在JS类的所有方法中添加一个preProcess