问题:在下面的代码中,我可以使用什么来查看我是否正确添加了方法,或者我可以使用哪些方法来查看我搞砸了多少?
在下面的测试代码中,我向函数添加了一个方法,它按预期工作。
"use strict";
function aircraft() {
return aircraft.myPlane();
}
aircraft.myPlane = () => 'XB-42';
console.log(aircraft());

在下一个测试代码中,我为函数原型添加了一个方法,它也可以按预期工作。
"use strict";
function aircraft() {
return aircraft.prototype.myPlane();
}
aircraft.prototype.myPlane = () => 'XB-42';
console.log(aircraft());

然而,在最后一个例子中,我想我可能做了一些愚蠢的事,但我并不完全确定。是否将.myplane()
函数直接添加到整个程序中所有函数的主函数原型中?有没有办法让我检查并查看我实际做了什么,以便我可以测试和比较我的结果?
答案 0 :(得分:1)
您需要区分功能和类(使用功能关键字)。在第一个示例中,您只是简单地向函数添加属性,而不是类的实例化(这可能是您尝试做的事情)。
在function
构造函数中,您应该使用this
引用该特定实例,如下所示:
function Aircraft() {
// function constructor (doesn't do anything useful in either example)
}
const myAircraft = new Aircraft();
// assigns to this instantiation only:
myAircraft.myPlane = () => 'XB-42';
console.log(myAircraft.myPlane());

要分配原型,请执行以下操作:
function Aircraft() {
// function constructor (doesn't do anything useful in either example)
}
// applies to all Aircraft:
Aircraft.prototype.myPlane = () => 'XB-42';
const myAircraft = new Aircraft();
console.log(myAircraft.myPlane());