我有这个页面我在Javascript和jQuery中做了一些测试:JS Tests
我有一些关于如何创建的问题,不确定这是否是正确的术语,而是通过Javascript进行复合控制。在像Flash这样的东西中,你可以创建Object类,拥有getter和setter,绘制你的图像等等。在JS中,它似乎是一个非常不同的思考过程。我的主要问题是如何使用Javascript中的getter和setter进行渲染,过滤和交互来创建多个元素?
关于此示例的主要代码位于:
var html = (function(){
// var FRAG = $(document.createDocumentFragment());
htmlBox = $(document.createElement("div"));
var eTitle = $(document.createElement("h4"));
var ePrice = $(document.createElement("p"));
// set class first
htmlBox.addClass("box")
htmlBox.css({
backgroundColor : color
})
// set text values
eTitle.text(title);
ePrice.text("$" + price);
htmlBox.append(eTitle)
htmlBox.append(ePrice)
return htmlBox;
})();
...在Box()类中。如果有人可以看看来源,让我知道什么是不对的,那就太好了。
修改
以下是此示例的最终结果。一些后勤工作,但我正在追求。
http://geerswitch.in/tests/obj/
至于jQuery创建节点,内置的JS版本可以正常工作,对Google的一些研究表明,无论如何,非jquery方式在大多数情况下都更快(看起来更糟,imo)
答案 0 :(得分:1)
你做得差不多。您已经创建了一个Box
类来表示您的高阶UI元素,您要为每个元素实例化它,并且您的主程序通过其接口操作元素。您唯一缺少的是公共接口和私有实现之间的分离。没有什么可以阻止我立即执行myBox.price += 10
,即使Box
界面明确暗示price
应该在构造时设置并且从不修改。
JavaScript没有像“private”和“public”这样的可见性修饰符,但您可以自己创建相同的效果。查看Douglas Crockford's explanation了解详细信息。在谈到JavaScript时,Crockford是一个自以为是的天才,他是JSLint和JSON背后的大脑。