【问题标题】:Javascript toSource() method not workingJavascript toSource()方法不起作用
【发布时间】:2009-07-09 02:40:59
【问题描述】:

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

我确实在 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

虽然这个链接说它可能http://www.w3schools.com/jsref/jsref_toSource_date.asp

【问题讨论】:

    标签: javascript


    【解决方案1】:

    toSource() 在 Internet Explorer 或 Safari 中不起作用。它是 Gecko 独有的。请参阅Implementing Mozilla's toSource() method in Internet Explorer 了解替代方案。

    【讨论】:

    • +1 提到 Safari!浏览器的世界不仅仅是 Firefox 和 IE。
    • @Vince:如果你的老板那么无能,试着向他解释,确保它在 IE 和 FF 之外也能工作,这样下次升级 IE 时会减少维护工作。它还可以让 IE 和 FF 用户在使用手机浏览网站时对您的公司感到厌烦(无论是 iPhone、诺基亚还是其他没有 IE 的设备)。
    • 不要忘记 Chrome 确实参与了战斗。撇开 Safari+Chrome+Opera 不谈,你可能会留下 15% 的份额(取决于你的网站市场)。举个例子,见:w3schools.com/browsers/browsers_stats.asp
    • @Vince:1998 年打电话,它想要它的言辞。 Safari 和 Chrome 共享 Webkit 渲染引擎;加在一起,它占据了相当大的市场份额。此外,如果它在 FF 中工作,它有 90% 的机会在 Safari、Chrome、Opera 等中工作。 (虽然不是在 IE 中,这更像是 50% 的机会)
    【解决方案2】:

    尝试改用JSON serializertoSource 是 Mozilla 特有的,IE 不支持。

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

    更新:请注意,link you posted 上写着“注意:此方法在 Internet Explorer 中不起作用!”在MDC page 上写着“非标准”。

    【讨论】:

    • 糟糕!抱歉大家没看到
    • 该 GitHub 链接中有 5 种不同的 JSON 序列化器实现。您能否给出此代码的替代示例:alert(obj.toSource())
    • 试试alert(JSON.stringify(obj))
    【解决方案3】:

    您可以改为调用 toString,或者输入这样的条件...

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

    编辑:

    由于这不适合您,您可能需要使用 JSON.stringify()

    【讨论】:

      【解决方案4】:

      虽然不推荐(扩展原生 JS 对象),但在开发过程中您可以使用:

      Object.prototype.toSource 
          || (Object.prototype.toSource = function(){return JSON.stringify(this);})
      
      c = {a:100}
      //>Object
      c.toSource()
      //>"{"a":100}"
      

      干杯!

      【讨论】:

      • 函数之类的呢?
      【解决方案5】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2021-09-13
      • 2021-05-03
      相关资源
      最近更新 更多