javascript 的问题,啥叫对函数自身的引用?

来源:百度知道 编辑:UC知道 时间:2024/05/25 18:22:44
function pasta(grain, width, shape, hasEgg)
{
this.grain = grain;
this.width = width;
this.shape = shape;
this.hasEgg = hasEgg;

// 这里添加 toString 方法(如下定义)。
// 注意在函数的名称后没有加圆括号;
// 这不是一个函数调用,而是
// 对函数自身的引用。
this.toString = pastaToString;
}

function pastaToString()
{
return "Grain: " + this.grain + "\n" +
"Width: " + this.width + "\n" +
"Shape: " + this.shape + "\n" +
"Egg?: " + Boolean(this.hasEgg);
}
var spaghetti = new pasta("wheat", 0.2, "circle", true);
window.alert(spaghetti);

不明白最后这个alert是怎么调用pastaToString的
请高手指点一下
谢谢(clzhpu)
明白了,window.alert(object)调用对象toString方法。this.toString=pastaToString将默认toString方法改成自定的pastaToString。
谢谢.给分

window.alert( spaghetti );
首先你的 spaghetti 是一个 pasta 类型的变量: var spaghetti=new pasta(....);

然后用 window.alert, 因为是一个对象,就直接调用此对象的 toString 方法。而你在 pasta 中将 toString 方法修改成了 pastaToString: this.toString = pastaToString。所以就直接调用 pastaToString 方法了哦

对函数自身的引用?不是很明白你的意思。你是不是说的“嵌套调用”?比如:
function func(number){
if( number < 10 )
return func(number+1);
return number;
}

this.toString = pastaToString 就是将 pasta 对象的 toString 方法修改成调用 pastaToString 啊。或者用下面的语句也可以吧:
pasta.prototype.toString = pastaToString;