gpt4 book ai didi

javascript - toString 在 IE 中不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 05:15:07 25 4
gpt4 key购买 nike

我在 javascript 中有一个定义 toString 方法的类,但是当我想在页面中打印它时,它总是在 IE 中打印 [object object](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;

屏幕截图:

IE

Firefox

最佳答案

其实上面的评论是不正确的。尽管您可能无法覆盖元素上的默认原型(prototype)方法,但您可以为自己的类型做到这一点。问题是 toString 没有作为代码片段中的键返回:

for (var key in o) arg[key] = o[key];

如果您添加以下内容,事情将按预期进行:

if (o.toString !== Object.prototype.toString) {
arg.toString = o.toString
}

关于javascript - toString 在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com