【问题标题】:Why my own "toString()" function doesn't work in my javascript?为什么我自己的“toString()”函数在我的 javascript 中不起作用?
【发布时间】:2016-09-01 07:34:51
【问题描述】:

我在我的 chrome 调试控制台中尝试过:

>function m(){function toString(){return "abc"}}
undefined
>new m().toString()
"[object Object]"

我希望它打印“abc”。为什么?

【问题讨论】:

  • 用作构造函数的函数应该返回一个对象。如果不是,则忽略返回值并返回一个对象。
  • 你需要了解局部变量和对象属性的区别。

标签: javascript google-chrome printing tostring


【解决方案1】:

您没有使用自己的toString 方法(这是m 内部的私有函数),而是来自Object 的方法。

对于你自己的方法,你需要将你的toString方法赋值给m的原型,比如

m.prototype.toString = function () { return 'abc'; };

function m() {}
m.prototype.toString = function () { return 'abc'; };

console.log((new m).toString());

【讨论】:

    【解决方案2】:

    试试这个。

    function m() {
      this.toString = function() {
        return "abc";
      }
    }
    
    var m1 = new m();
    alert(m1.toString());

    【讨论】:

      【解决方案3】:

      您的代码错误。您可以尝试此代码并在此处检查输出http://jsbin.com/luremulano/edit?html,js,console,output

        console.log(m('abc'));
      
        function m(a){
            return a.toString();  
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-07
        相关资源
        最近更新 更多