私は2つのAPIを持っていて、最初からクラスを継承したいと思いますが、.prototype.toJSON()でレスポンスを変更します。クラスメソッドを継承するJavascript
私がファーストクラスから継承するとき、どのようにしてクラスメソッドも継承できます。私は今
var User = require('./v2/models/users');
User.find(1);
を呼び出そうとすると
例
//file v1/models/users.js
var UserModel = function() {
this.id = 0;
this.firstName = '';
this.lastName = '';
}
UserModel.find = function(q, callback) {
//find any user that matches q and map them to UserModel
if (err) return callback(err, null);
callback(null, users);
}
module.exports = UserModel;
そして、次のバージョンでは
//file v2/models/users.js
var UserModel = require('../v1/models/users');
function UserModelV2() {
UserModel.call(this);
}
UserModelV2 = Object.create(UserModel.prototype);
UserModelV2.prototype.constructor = UserModel;
UserModelV2.prototype.toJSON = function() {
var obj = {};
obj.firstName = 'foo';
return obj;
}
module.exports = UserModelV2;
私はUser.findが存在しないというエラーを取得します。
私はプロトタイプのプロパティのみを継承していることを知っていますが、クラスメソッドを継承する例はどこにもありません。
'User.prototype.find' - 関数の' .prototype'は、その関数をコンストラクタとして使用して作成されたオブジェクトのプロトタイプ( '__proto__'プロパティ)を決定します。 –
これを見て、私はあなたが 'UserModelV2 'を意味すると思います。prototype = Object.create(UserModel.prototype); ' – Thomas
@Thomas番号は、' Object.create() 'の正しい使い方です。 –