javascript - 为什么在 javascript 中不调用覆盖的 toString()

标签 javascript node.js tostring overriding

我试图覆盖 toString() 但我发现,覆盖的函数根本没有被调用。

我已经经历了thisthis ,但我无法追踪我的错误。

我的尝试:

DIRECTION = {
    NONE : 0,
    DIAGONAL: 1,
    UP: 2,
    LEFT: 3
};

var Node  = function () {
    this.direction =  DIRECTION.NONE;
    this.weight = 0;
};
Node.prototype.toString = function NodeToSting(){
    console.log('Is called');
    var ret = "this.weight";
    return ret;
};

(function driver(){
    var node1 = new Node();
    console.log(node1);
    //findLcs("ABCBDAB", "BDCABA");
})();

输出:

{ direction: 0, weight: 0 }

最佳答案

console.log 将文字值输出到控制台 - 它不会将您的对象强制转换为字符串,因此不会执行您的 toString 实现。

你可以强制它输出这样的字符串:

console.log(""+node1);

例子:

DIRECTION = {
    NONE : 0,
    DIAGONAL: 1,
    UP: 2,
    LEFT: 3
};

var Node  = function () {
    this.direction =  DIRECTION.NONE;
    this.weight = 0;
};
Node.prototype.toString = function NodeToSting(){
    console.log('Is called');
    var ret = "this.weight";
    return ret;
};

(function driver(){
    var node1 = new Node();
    alert(""+node1);
    //findLcs("ABCBDAB", "BDCABA");
})();

关于javascript - 为什么在 javascript 中不调用覆盖的 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31178303/

相关文章:

Javascript:从函数实现单一导出点

javascript - 向终端提示添加颜色会导致出现大的空白

java - 具有最少 2 个小数位的 BigDecimal

c# - int 到 string 没有显式转换?

javascript - 如何访问ajax调用返回的对象中的数据

javascript - 如何编写带有脚本的 html 页面以在 node.js 中进行响应?

javascript - 更改日期选择器上的日期格式

javascript - 单击内部 View 元素时波纹效果不起作用(Android Appcelerator)

javascript - 首先在 gulp 中连接一个文件

javascript - 在 JavaScript 中将负数转换为二进制字符串