【发布时间】:2012-02-27 13:54:42
【问题描述】:
我在 javascript 中有一个定义 toString 方法的类,但是当我想在页面中打印它时,它总是在 IE(6-8) 中打印[object object]。
但它可以在 firefox 或 chrome 中使用(在下面的示例中它们都打印 'kk')。
不知道为什么?
这是示例代码:
function Person(name){
this.name=name;
}
Person.prototype.toString=function(){
return this.name;
}
var p=new Person('kk');
document.getElementById('dis').innerHTML=p.toString();
有什么问题?
顺便说一句,这是我应用程序中的代码:
function inherit(pro) {
function F() {};
F.prototype = pro;
return new F();
}
var Class = function() {
var clazz = null,
pros = {}; // root of chain
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (typeof arg === "function") {
arg = arg.prototype;
} else {
if (arg.init) {
clazz = arg.init;
delete arg.init;
}
var o = arg;
arg = (function() {
function F() {};
F.prototype = pros;
return new F;
})();
for (var key in o) arg[key] = o[key];
}
pros = arg;
}
clazz.prototype = pros;
return clazz;
};
var Person = Class({
init: function(name) {
this.name = name;
},
toString: function() {
return this.name;
}
});
function init() {
var p = new Person('kk');
document.getElementById('dis').innerHTML = p.toString();
}
window.onload = init;
屏幕截图:
【问题讨论】:
-
it works是什么意思?它在 FF 和 Chrome 中有什么作用? -
代码的最后一行,即
window.onload = init();,不正确/不是您期望的那样。这将立即执行init函数,而不是在加载窗口时。删除()括号是正确的。 -
很好,但结果没有改变。
-
刚刚尝试了最后一段代码。它在 IE9 中工作,但它确实在 IEtester 中显示 [object Object] for IE8 及以下。从截图来看,我认为他正在使用 IE8。
标签: javascript internet-explorer tostring