jQuery data()与对象(性能)的比较

3

我想知道使用jQuery数据绑定对象和使用此类对象哪种方式更有效。我正在尝试为我的应用程序创建某种模型。以下是对象代码:

var PersonData = function () {
    var that = {},
        _name = 0,
        _age = 0.0,
        _domId = false;

    that.data = initData();

    //This is for initing data from options
    function initOptions () {
        return {
            name: _name,
            age: _age,
            domId: _domId
        }
    }

    that.setName = function (name) {
        that.data.name = name;
    }

    that.getName = function () {
        that.data.name;
    }

    // I forgot to add dom id, now there is id for binding
    that.setDomElementId = function (id) {
        that.data.domId = id;
    }

    //Add getters and setter

    return that;
}

感谢您的意见。

顺便问一下,有没有适用于Javascript的Textmate插件来生成getter和setter?


请将“顺便问一下”的问题保留到另一个问题中。 - Ates Goral
一个具有默认属性的数据结构的惯用语法是:function PersonData(name, age) { this.name = name || ""; this.age = age || 0; } 然而,对于这样的假值默认值,我会选择将它们保留为未定义。 - Ates Goral
1个回答

5

jQuery的.data()用于将数据附加到DOM元素上。如果您不涉及DOM操作,则不要使用.data()

此外,我认为在JavaScript中追求封装并不值得(除非您需要检测数据读写)。特别是如果您关心性能,直接访问对象属性是更好的选择。JavaScript是一种动态语言,应该拥抱它:)


1
+1 针对语言特性的应用。如果可以将数据与表示(DOM)解耦,我还会再加上一个 +1。 - Ates Goral
该死,我忘记为对象添加DOM ID了,对此感到抱歉。 - user257980
感谢封装技巧。 - user257980
2
@user 这取决于您希望如何访问您的对象。如果您将它们保存在某个JS数组/对象中,则应坚持现有方法。如果您想要能够使用jQuery选择器访问它们...那么请使用jQuery的.data()。但从性能上来看,直接属性访问比函数调用更快。 - David Tang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接