Javascript toSource()方法不起作用

Javascript toSource()方法不起作用,javascript,Javascript,我得到一个“对象不支持此属性或方法错误”,有人知道为什么吗 我确实在userId、fname、lname、oname、sam和hasAccess中插入了值 function Employee(id, fname, lname, oname, sam, access) { this.id = id; this.fname = fname; this.lname = lname; this.oname = oname this.sam = sam; t

我得到一个“对象不支持此属性或方法错误”,有人知道为什么吗

我确实在userId、fname、lname、oname、sam和hasAccess中插入了值

function Employee(id, fname, lname, oname, sam, access) {
    this.id = id;
    this.fname = fname;
    this.lname = lname;
    this.oname = oname
    this.sam = sam;
    this.access = access;
}

var emp = new Employee(userId, fname, lname, oname, sam, hasAccess);

var jsonstuff = emp.toSource(); //Breaking here
尽管此链接表示可能

但请尝试改用
toSource
是特定于Mozilla的,IE不支持

如果您只是在调试,那么最好的选择是使用console.dir(emp);将对象的内容打印到控制台窗口


更新:请注意,它在屏幕上显示“注意:此方法在Internet Explorer中不起作用!”而在屏幕上显示“非标准”。

您可以调用toString,也可以将其设置为这样的条件

var jsonstuff = (emp.toSource) ? emp.toSource() : emp.toString();
编辑:


由于这对您不起作用,您可能需要使用

toSource()
在Internet Explorer或Safari中不起作用。这只是壁虎。请参阅以获取替代方案。

我建议使用现有的库或插件:

  • ExtJs:
  • jQuery:
  • 道场:
虽然不建议(扩展本机JS对象),但在开发过程中,您可以使用:

Object.prototype.toSource 
    || (Object.prototype.toSource = function(){return JSON.stringify(this);})

c = {a:100}
//>Object
c.toSource()
//>"{"a":100}"

干杯

哎呀!抱歉,伙计们没有看到GitHub链接中有5种不同的JSON序列化器实现。您能否给出此代码的一个替代示例:alert(obj.toSource())请尝试
alert(JSON.stringify(obj))
+1来提及Safari!浏览器的世界不仅仅是Firefox和IE。@Vince:如果你的老板那么无能,试着向他解释,确保它在IE和FF之外工作将导致下次升级IE时更少的维护工作。当IE和FF用户使用手机浏览网站时(无论是iPhone、诺基亚还是其他没有IE的产品),这也会让他们对你的公司不那么恼火。别忘了Chrome真的会加入这场斗争。撇开Safari+Chrome+Opera不谈,你可能会留下15%的份额(取决于你的网站市场)。举个例子,请看:@Vince:1998打电话来,它想收回自己的言辞。Safari和Chrome共享Webkit渲染引擎;加在一起,它占有相当大的市场份额。此外,如果它在FF中工作,它在Safari、Chrome、Opera等中工作的几率为90%(但在IE中不工作,这更像是50%的几率),那么功能等等呢?