小编Tra*_*vis的帖子

从JavaScript中的对象数组中删除重复项

我有一个包含对象数组的对象.

things = new Object();

things.thing = new Array();

things.thing.push({place:"here",name:"stuff"});
things.thing.push({place:"there",name:"morestuff"});
things.thing.push({place:"there",name:"morestuff"});
Run Code Online (Sandbox Code Playgroud)

我想知道从数组中删除重复对象的最佳方法是什么.所以,例如,事情会变成......

{place:"here",name:"stuff"},
{place:"there",name:"morestuff"}
Run Code Online (Sandbox Code Playgroud)

javascript arrays object duplicates

306
推荐指数
29
解决办法
32万
查看次数

一旦达到目的,对象是否可以在javascript中自动删除自身?

我想知道javascript中的对象是否有可能在完成任务后自行删除.

例如,我有以下对象......

var myObject = Object.create(baseObject);
myObject.init = function() {
  /* do some stuff... */
   delete this;
};
myObject.init();
Run Code Online (Sandbox Code Playgroud)

这有用吗?如果没有,还有另一种方式吗?

javascript oop

47
推荐指数
3
解决办法
3万
查看次数

在javascript中控制相关对象的正确方法是什么?

我是面向对象编程的新手,正在慢慢学习如何将它应用于javascript.所以请耐心等待.:)

我有两个基本对象:

  1. "record",包含从记录集编辑单个记录的方法.(创建,保存,加载等)

  2. "recordList",其中包含用于输出分页记录标题列表的方法.

我希望这些对象能够一起工作.例如,如果调用record.save(),则还会调用recordList.refresh(),以便分页列表反映更新的数据.

为了实现这一点,我创建了第三个对象"control",它包含"record"和"recordList"的实例.我以下列方式使用"控制":

control = {}

    control.record = object.create("record");
    control.recordList = object.create("recordList");

    control.save = function() {

        this.record.save();
        this.recordList.refresh();

    };
Run Code Online (Sandbox Code Playgroud)

这有效.但我想知道,这是正确的吗?(我想确保在执行此操作时我没有违反OO设计的任何规则.)有更好的方法吗?

在此先感谢您的帮助.

javascript oop

7
推荐指数
1
解决办法
184
查看次数

面向对象的javascript最佳实践问题:如何为以下内容配置我的对象

我已经决定我需要提高我的javascript编程技巧,以及我的OO技能.我目前正在阅读一些书籍,但有时候如果没先看到一些实际的例子,就很难掌握理论.所以,我对以下场景的"最佳实践"有一个理论问题......

我想创建一个OO脚本,显示从服务器检索的搜索标签记录列表.我还希望能够编辑每个搜索标签记录.

目前我在程序上通过jQuery库提供了一些帮助:

我接受来自服务器的JSON编码的searchtag记录列表.它看起来像这样:

[
   { "searchTagName" : "tagOne", "searchTagID" : "1" },
   { "searchTagName" : "tagTwo", "searchTagID" : "2" },
   { "searchTagName" : "tagThree", "searchTagID" : "3" },
   etc...
]
Run Code Online (Sandbox Code Playgroud)

我将JSON直接转储到jTemplates中以创建相应的html,如下所示:

$("#searchTagList")
   .setTemplateElement("template_searchTagList")
   .processTemplate(searchTagData);
Run Code Online (Sandbox Code Playgroud)

最后,我希望可以使用"就地编辑"方法修改每个搜索标签,因此我将预先构建的"就地编辑"方法附加到每个html元素:

$(".searchTag").editInPlace();
Run Code Online (Sandbox Code Playgroud)

这在程序上非常好.也许最聪明的事情就是单独留下足够好的东西.:)但是,为了争论,从OO的角度来看,写这样的东西的最佳方法是什么.

我应该有一个单独的对象"searchTagList",它具有上述每个步骤的方法吗?

var searchTagList = 
{
    searchTagData: JSONdata,
    renderList: function () { /*send to jTemplates */ }
    bindEdit: function() { /* attach edit-in-place */ }
}
Run Code Online (Sandbox Code Playgroud)

或者这是不正确的?(好像我正在做的就是将我的过程函数包装在一个对象中.)我应该以某种方式将JSON数据解析为每个搜索标签的实例,然后将各个方法附加到每个搜索标签?(这似乎是很多开销,没有收获.)

如果看起来我正在挑选头发,请提前道歉.但我真的想把这些东西直接放在脑海里.

谢谢,

特拉维斯

javascript oop jquery

6
推荐指数
1
解决办法
699
查看次数

如何在同一查询中选择所有直接子项和祖先

我正在使用MySQL中的树结构,使用嵌套集模型重新呈现.

我希望你们中的一些SQL专家可以帮我构建一个SELECT查询.

我希望能够使用LIKE匹配一组节点.对于匹配的每个节点,我还需要该节点的祖先的逗号分隔列表,以及该节点的直接子节点的逗号分隔列表.

我不确定从哪里开始 - 如果在单个查询中甚至可以实现这样的事情.(目前我在循环中使用查询来完成此操作.)我希望的是一个看起来像这样的结果集....

从字符串"qu"开始并查询表"Body"我得到...

Node      | Parent Nodes               | Immediate Children
Quads       Leg, Lower Body, Muslces     Vastus Lateralus, Vastus Medialis, Rectus Femoris
Obliques    Core, Trunk, Muscles         Inner obliques, outer obliques
Run Code Online (Sandbox Code Playgroud)

如何在不循环查询的情况下完成此任何建议将非常感激.

mysql sql tree nested-sets hierarchical-data

6
推荐指数
1
解决办法
1312
查看次数

什么时候应该在javascript中的对象扩充期间使用"原型"?

我对javascript中"原型"的概念感到困惑.

当我定义一个对象时,以下两个似乎都有效:

myObject = {};
myObject.prototype.method1 = function() { ... };
myObject.prototype.method2 = function() { ... };
myObject.prototype.method3 = function() { ... };
Run Code Online (Sandbox Code Playgroud)

和...

myObject = {};
myObject.method1 = function() { ... };
myObject.method2 = function() { ... };
myObject.method3 = function() { ... };
Run Code Online (Sandbox Code Playgroud)

谁能对此有所了解?这两种创建对象的方式究竟有什么区别,为什么我会选择另一种呢?(我觉得这种感觉很重要......)

谢谢!

javascript oop prototype

5
推荐指数
1
解决办法
719
查看次数

如何根据javascript中嵌套数组的长度对对象数组进行排序

我在javascript中有一个对象数组,每个对象都有一个数组:

{
    category: [ 
        { name: "Cat1", elements : [ 
            { name: name, id: id } ] 
        },
        { name: "Cat2", elements : [ 
            { name: name, id: id },
            { name: name, id: id },
            { name: name, id: id } ] 
        }, 
        { name: "Cat3", elements : [ 
            { name: name, id: id },
            { name: name, id: id } ] 
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想根据嵌套数组"elements"中的对象数量对数组"类别"进行排序.

例如,排序后,上面的对象可能看起来像这样(降序):

{
    category: [ 
        { name: "Cat2", elements : [ 
            { name: name, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting object

5
推荐指数
1
解决办法
2886
查看次数

如何让 setTimeout 在对象中执行方法?

我想让一个下拉菜单在发生 mouseleave 事件时关闭,经过短暂的延迟。但我很难让它工作。

考虑对象中的以下方法:(我正在使用 jQuery)

myObj = {};

myObj.message = "woot!";

myObj.bindEvents = function() {

        var that = this;

        $("#menuPanel")
            .bind("mouseleave", function() { 

                    that.timer = setTimeout(that.closeMenu,500); 

            });

    }

myObj.closeMenu = function() {

     // close the menu

     alert(this.message);

}
Run Code Online (Sandbox Code Playgroud)

这不起作用。也就是说, this.message 出现未定义。经过一番挖掘,我明白了为什么。:) 'that' 引用在执行时对 setTimeout 内的代码不可用。

我想知道,解决此类问题的“最佳”方法是什么?如何让使用 setTimeout 的方法调用同一个对象中的另一个方法,并且仍然可以访问对象中的属性?

在此先感谢您的帮助。

javascript oop settimeout

3
推荐指数
1
解决办法
1546
查看次数