我試圖訪問孩子的構造父母的方法如下:的JavaScript/Node.js的:ES5子類的實例訪問父類的方法
file1.js
var ParentClass = function(arg) {
this.arg = arg;
this.result = {};
};
ParentClass.prototype = {
constructor: ParentClass,
isActive: function(condition) {
return new Date(condition.valid).getTime() <= Date.now())
}
};
module.exports = ParentClass;
file2.js
var ParentClass = require('file1');
var ChildClass= function(arg) {
ParentClass.apply(this, arguments);
this.init();
};
ChildClass.prototype = Object.create(ParentClass.prototype);
ChildClass.prototype.constructor = ChildClass;
ChildClass.prototype = {
init: function() {
this.result = this.arg.validity
.filter(function(elem) {
return this.isActive(elem)
}.bind(this));
}
}
module.exports = ChildClass;
個
file3.js
var ChildClass= require('file2.js');
var instance = new ChildClass(param);
初始化這樣的例子給我
TypeError: this.isActive is not a function
at Object.<anonymous> (file2.js)
at Array.filter (native)
at Object.ChildClass.init (file2.js)
幫助和解釋讚賞。謝謝!
是'this.arg.validity'對象或數組? 「ParentClass.apply(this,arguments)'的目的是什麼? – guest271314
你沒有正確使用Object.create'。根據文檔,它會創建一個對象,其**原型**等於您傳入的對象。因此,要訪問它,您必須說'ChildClass.prototype .__ proto__',或者您可以說'ChildClass.prototype = Object.create(ParentClass.prototype).__ proto__'。您還將'ChildClass.prototype'重新定義爲一個新對象,而不是僅僅定義它的init方法。你的意思是說'ChildClass.prototype.init = function(){...}'? – mhodges
@ guest271314 - 用任何傳遞給構造函數的參數調用父類的構造函數。 – jfriend00