为什么在javascript中不调用重写的toString()
我试图重写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
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
,因为它不明显