我有一个包含对象数组的对象.
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中的对象是否有可能在完成任务后自行删除.
例如,我有以下对象......
var myObject = Object.create(baseObject);
myObject.init = function() {
/* do some stuff... */
delete this;
};
myObject.init();
Run Code Online (Sandbox Code Playgroud)
这有用吗?如果没有,还有另一种方式吗?
我是面向对象编程的新手,正在慢慢学习如何将它应用于javascript.所以请耐心等待.:)
我有两个基本对象:
"record",包含从记录集编辑单个记录的方法.(创建,保存,加载等)
"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编程技巧,以及我的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数据解析为每个搜索标签的实例,然后将各个方法附加到每个搜索标签?(这似乎是很多开销,没有收获.)
如果看起来我正在挑选头发,请提前道歉.但我真的想把这些东西直接放在脑海里.
谢谢,
特拉维斯
我正在使用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)
如何在不循环查询的情况下完成此任何建议将非常感激.
我对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中有一个对象数组,每个对象都有一个数组:
{
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) 我想让一个下拉菜单在发生 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 ×7
oop ×5
arrays ×2
object ×2
duplicates ×1
jquery ×1
mysql ×1
nested-sets ×1
prototype ×1
settimeout ×1
sorting ×1
sql ×1
tree ×1