Javascript 从其他函数继承属性
假设我有一个名为Javascript 从其他函数继承属性,javascript,node.js,Javascript,Node.js,假设我有一个名为foo的函数,我希望functionbar从foo继承一些东西,例如: function foo(param1, param2, param3) { this.params = [param1, param2, param3]; this.otherParameter = 3.141; } module.exports = foo; foo.prototype.getParams = function(i, bool) { if(bool) {
foo
的函数,我希望functionbar
从foo
继承一些东西,例如:
function foo(param1, param2, param3) {
this.params = [param1, param2, param3];
this.otherParameter = 3.141;
}
module.exports = foo;
foo.prototype.getParams = function(i, bool) {
if(bool) {
return this.params[i];
}else{
return this.otherParameter;
}
};
var foo = require('./foo');
function bar() {
this.barParams = [1, 2, 3, 4];
}
我如何根据
foo
像bar.prototype=newfoo(1,2,3),制作bar
代码>?我应该使用绑定函数吗?如果是这样,怎么做?这是一个重复的问题,但是:通常的方式(在ES2015之前)是这样的:
function bar(/*...args for bar...*/) {
foo.call(this, /* appropriate arguments for foo */);
}
bar.prototype = Object.create(foo.prototype);
bar.prototype.constructor = bar;
所以,如果我让foo包含一些方法,比如数字的加减,bar得到这些数字,这将允许bar使用foo的方法加减数字,并通过this.add调用foo方法(barArg1,barArg2)代码>是bar.prototype
从foo.prototype
继承方法,bar
实例从bar.prototype
继承方法。然后,bar
实例还获取由foo
添加的任何方法(例如,如果您执行了this.add=function(){…}),则在foo
构造函数内,因为foo
在我们从bar
调用它时分配它们。(顺便说一句:与new
一起使用的函数应该有首字母大写,例如Foo
和Bar
)是的,所以Foo.prototype.add=function(){}代码>我可以在条形码中使用。添加(1,2)代码>然后最后在一个完全外部的函数调用中bar.add(1,2)代码>?很抱歉,我才12岁,对这些相互交织的函数还不熟悉。@IanS:是的,原型继承就是这样工作的。但是请注意,函数中的this
并不总是您期望的对象,因为this
实际上是一个函数参数。更多: