我需要按键对JavaScript对象进行排序.
因此如下:
{ 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }
Run Code Online (Sandbox Code Playgroud)
会成为:
{ 'a' : 'dsfdsfsdf', 'b' : 'asdsad', 'c' : 'masdas' }
Run Code Online (Sandbox Code Playgroud) 我.js在我的页面中添加了一个简单的文件,其中添加了一些非常普通的常见任务类型的函数Object和Array原型.
通过反复试验,我发现添加任何函数Object.prototype,无论它的名称或它的作用导致jQuery中的Javascript错误:
罪魁祸首?
Object.prototype.foo = function() {
/*do nothing and break jQuery*/
};
Run Code Online (Sandbox Code Playgroud)
我jquery-1.3.2.js在attr:function {}声明中得到第1056行的错误:
/*Object doesn't support this property or method*/
name = name.replace(/-([a-z])/ig, function(all, letter) {
return letter.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)
显然G.replace是未定义的.
虽然很明显有些东西我只是没有用原型制作来解决问题,但我很难弄清楚它是什么.
要清楚,我不是在寻找一种解决方法,我已经处理好了......我正在寻找的是为什么要回答?.为什么要添加一个函数来Object.prototype打破这段代码呢?
假设我有一个初始化的Javascript对象
var letters = {q:0, t:0, o:0, b:0, y:0, n:0, u:0, m:0, p:0,
w:0, a:0, d:0, k:0, v:0, c:0, z:0, l:0, j:0,
i:0, e:0, g:0, s:0, x:0, r:0, h:0, f:0};
Run Code Online (Sandbox Code Playgroud)
然后我想迭代这些对象的键
for(var letter in letters) {
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
在Firefox 3和Internet Explorer 8中,对象按照它们在对象声明(q,t,o,b,y等)中列出的顺序进行迭代.
我可以依靠吗?假设在迭代之前我没有以任何方式修改我的对象.它是ECMAScript标准的一部分吗?有谁知道哪些浏览器在声明的顺序中迭代?
我需要一个可以接受字符串和数组的javascript函数,如果该字符串在数组中,则返回true.
function inArray(str, arr){
...
}
Run Code Online (Sandbox Code Playgroud)
警告:它不能使用任何javascript框架.