我在 javascript 中有一个类定义了 toString 方法,但是当我想在页面中打印它时,它总是打印[object object]
在 IE(6-8) 中。
但它可以在 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;
截屏:
其实上面的评论并不正确。尽管您可能无法覆盖元素上的默认原型方法,但您可以为自己的类型执行此操作。问题是 toString 没有作为代码片段中的键返回:
for (var key in o) arg[key] = o[key];
如果添加以下内容,事情将按预期进行:
if (o.toString !== Object.prototype.toString) {
arg.toString = o.toString
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)