微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在JavaScript中放置交互式对象的位置?

我正在创建一个基于Web的应用程序(即带有jQuery和大量SVG的JavaScript),用户可以在屏幕上与“对象”进行交互(想想可以通过arraows四处移动,调整大小和连接的DIV – 就像矢量绘图程序一样或图形编程语言).

由于每个“对象”包含个别信息但总是属于元素的“类”,因此很明显应该使用OOP方法对该应用程序进行编程.

但是,我最好在哪里存储“物品”?

>我应该使用所有(JS本机)对象创建一个全局结构(“注册表”)并告诉他们“在DOM上绘制自己”吗?
>或者我应该避免这样的结构并将(相关的)DOM节点视为我的对象并将相关数据作为.data()附加到它们?

第一种方法是非常MVC – 但我想所有事件处理程序的附件都是非常重要的.

第二种方法将以微不足道的方式处理事件,并且它不会创建重复的结构,但我想通常的OO东西(比如方法)会更复杂.

你有什么建议的?我认为答案将是JavaScript和SVG特定的“通常”编程语言没有这样高度组织的输出“画布”.

最佳答案
在过去的这种情况下(我已经打了大约5次)我总是在JS中创建OOP(全局“类”,适当的非全局数据结构).每个类通常都有一个指向其图形表示的.g属性. (在jQuery的.data之前,我在DOM实例上使用了expando属性,指向类实例,当事件处理程序或其他类似的东西需要反过来时.)

我也把它想象成MVC,但是当你有一个JS解释器来存储模型,充当控制器以及操纵视图时,当然很容易模糊线条(或者很难将它们分开).

我没有发现在这个系统下添加事件处理程序很困难:实例化一个新对象(在代码中)负责在视图中实例化它的表示,并附加它自己的触发基于实例的回调的事件处理程序.该代码基于状态(例如,选择的)将输入特定事件(例如,mousedown)映射到逻辑事件.其他代码注册到实例上的这些逻辑事件.

原文地址:https://www.jb51.cc/jquery/427912.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐