Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在javascript中不调用重写的toString()_Javascript_Node.js_Tostring_Overriding - Fatal编程技术网

为什么在javascript中不调用重写的toString()

为什么在javascript中不调用重写的toString(),javascript,node.js,tostring,overriding,Javascript,Node.js,Tostring,Overriding,我试图重写toString(),但我发现,被重写的函数根本没有被调用 我已经经历了很多,但我无法追踪我的错误 我的尝试: DIRECTION = { NONE : 0, DIAGONAL: 1, UP: 2, LEFT: 3 }; var Node = function () { this.direction = DIRECTION.NONE; this.weight = 0; }; Node.prototype.toString = fun

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

我已经经历了很多,但我无法追踪我的错误

我的尝试:

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);
例如:

方向={
无:0,,
对角线:1,
上升:2,
左:3
};
变量节点=函数(){
this.direction=direction.NONE;
这个重量=0;
};
Node.prototype.toString=函数nodeTesting(){
log('Is called');
var ret=“this.weight”;
返回ret;
};
(函数驱动程序(){
var node1=新节点();
警报(“+node1”);
//FindLC(“ABCBDAB”、“BDCABA”);

})();应该在哪里调用它<代码>控制台.log
不会。对toString的调用在哪里?@SunilD。没错,但我不想在SO代码段中添加
console.log
,因为它不明显