I have a class in javascript that defines the toString method, however, when I want to print it on the page, it always prints [object object] in IE (6-8).
But it works in firefox or chrome (they all print "kk" in the example below).
I wonder why?
This is a sample code:
function Person(name){ this.name=name; } Person.prototype.toString=function(){ return this.name; } var p=new Person('kk'); document.getElementById('dis').innerHTML=p.toString();
What is the problem?
By the way, this is the code in my application:
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;
Screenshot:


source share