Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从其他函数继承属性_Javascript_Node.js - Fatal编程技术网

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
的函数,我希望function
bar
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
实际上是一个函数参数。更多: