相关疑难解决方法(0)

for-in JavaScript语句中的IE8错误?

我想我已经在IE(IE8)处理for-in javascript语句中发现了一个错误.经过几个小时的煮沸这个小例子后,看起来IE特意在for-in循环中跳过任何名为"toString"的属性 - 无论它是在原型中还是对象的"自有属性".

我把测试代码放在这里:

function countProps(obj) {
    var c = 0;
    for (var prop in obj) {
        c++;
    }
    return c;
}

var obj = {
    toString: function() {
        return "hello";
    }
};

function test() {
    var o = "";
    var d = document.getElementById('output');

    o += "<br/>obj.hasOwnProperty('toString') == " + obj.hasOwnProperty('toString');
    o += "<br/>countProps(obj) = " + countProps(obj);
    o += "<br/>obj.toString() = " + obj.toString();

    d.innerHTML = o;
}
Run Code Online (Sandbox Code Playgroud)

这应该产生:

obj.hasOwnProperty('toString') == true
countProps(obj) = …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer prototype quirks-mode internet-explorer-8

9
推荐指数
1
解决办法
6043
查看次数

对象名称是一个函数名称?

如果我们有

var randomname = {};
randomname.attribute = 'something';

function randomname(){
  alert(randomname.attribute);
}
randomname();
Run Code Online (Sandbox Code Playgroud)

javascript会抛出任何错误吗?


更新
所以,我们知道我们不能让一个对象与一个函数同名.

为什么是这样?

javascript是否应该通过您调用它的方式告诉您的内容?

javascript

7
推荐指数
2
解决办法
5026
查看次数