将Javascript命名空间分配给HTML元素,并从element调用命名空间中定义的函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将Javascript命名空间分配给HTML元素,并从element调用命名空间中定义的函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1934字,纯文字阅读大概需要3分钟。
内容图文
![将Javascript命名空间分配给HTML元素,并从element调用命名空间中定义的函数](/upload/InfoBanner/zyjiaocheng/720/f3b787971e044769883ffdeb4a3250b4.jpg)
如何将一个Javascript命名空间分配给HTML元素并调用该元素上所述命名空间中定义的函数?
我问了另一个问题:
Attaching JavaScript to the prototype of an ASCX client side instance
上一个问题回答了如何做到这一点,但现在我很好奇这是如何在纯Javascript / HTML级别上工作的.我并没有更接近于搞清楚它.
假设我有一个只包含文本框的HTML页面:
<html>
<body>
<div>
<input type="text" id="MyTextBox" />
</div>
</body>
</html>
在浏览器中,我可以做document.getElementById(‘MyTextBox’).
然而我的问题是,只使用javascript,如何分配返回javascript类型的对象,以便从对象中调用命名空间中定义的函数?
例如,我想做:
var x = document.getElementById('MyTextBox');
x.SetTheText('blah');
在我的自定义命名空间/类型/类中,我将SetTheText定义为
function SetTheText(text) {
this.value = text;
}
我怎么说MyTextBox是一个可以运行JS命名空间中定义的函数的对象.
我希望这是有道理的
解决方法:
基本上,您可以向(几乎)任何类型的JS对象添加任何类型的属性.如果你向一个对象添加一个函数,那么这个函数就是对象.
换一种说法
var x = document.getElementById('MyTextBox'); // a DOM object
x.setTheText = function(text) {
this.value = text;
};
x.setTheText('blah'); // bingo
如果要扩展整个类的对象,也可以通过原型来实现
HTMLTextAreaElement.prototype.setTheText = function(text) {
this.value = text;
};
someRandomTextArea.setTheText("blah"); // bingo. Again.
但是,这并不是真正推荐的,因为你正在搞乱你无法控制的对象(即它像其他脚本和浏览器更新一样脆弱,以及可能会阻碍的方式).此外,您可以通过这样做打破其他一些代码.
一个更好的解决方案(在很多方面)是将未修改的DOM元素包装在另一个对象中的jQuery解决方案,并且直接调用包装器对象而不是元素上的方法(就个人而言,我更喜欢可以来自的“漂亮”代码扩展本机JS对象,但是,它不安全,所以我试图退出.)
附:在javascript中使用Captilized类;方法是camelCase.我已经相应地编辑了代码.它不是由任何东西强制执行的东西,而是风格的风格.
编辑:为了比较,您可以查看the prototype.js library,它通过扩展DOM来发挥其神奇作用.同样,在我看来,与jQuery的$(…).xyz(…)的常量调用相比,它产生了一些非常漂亮的代码,但它仍然是一个稍微危险的路径
内容总结
以上是互联网集市为您收集整理的将Javascript命名空间分配给HTML元素,并从element调用命名空间中定义的函数全部内容,希望文章能够帮你解决将Javascript命名空间分配给HTML元素,并从element调用命名空间中定义的函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。