我可以使用什么来测试添加到原型中添加的函数和方法的方法?

时间:2018-04-13 02:46:37

标签: javascript methods prototype

问题:在下面的代码中,我可以使用什么来查看我是否正确添加了方法,或者我可以使用哪些方法来查看我搞砸了多少?

在下面的测试代码中,我向函数添加了一个方法,它按预期工作。



"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()函数直接添加到整个程序中所有函数的主函数原型中?有没有办法让我检查并查看我实际做了什么,以便我可以测试和比较我的结果?

1 个答案:

答案 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());