javascript - 如何合并实例中的模块?

标签 javascript

我正在尝试找到一种方法来合并或在类中添加模块的一些方法和属性。

function User(data){
  this.name = data.name;
}

User.prototype.sayHello = function(){
  return this.name+' says hello.';
}

module.exports = User;

例如,一旦加入游戏,我想向我的用户添加 Player 类中的一些属性和方法。

function Player(user){
  this.chances = 3;
}

Player.prototype.run = function(){
 return this.name+' is running.';
}

我尝试使用子类,但我丢失了用户的所有参数,并且只有玩家的参数。我想做这样的事情:

var user = new User({name:Jacques});

user.sayHello() // Jacques says hello.

user.becomePlayer();

user.run(); // Jacques is running.

或者是否可以向用户变量添加属性和方法?

user.becomePlayer() // user now can run.

最佳答案

如果你想在对象 user 上添加一个方法,你可以这样做:

User.prototype =  {
    sayHello : function(){
        return this.name+' says hello.';
    },
    becomePlayer: function () {
        //do some thing
    }
}

如果用户想访问播放器的方法,可以使用继承( 原型(prototype)链继承):

User.prototype = new Player();
var user = new User({name: 'Jacques'})

console.log(user.run());//Jacques is running.

关于javascript - 如何合并实例中的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209175/

相关文章:

javascript - jquery 获取 iframe 中元素的 offset()

javascript - 隐藏所有子元素,但首先隐藏每组元素

javascript - PHP AJAX - &lt;input&gt; 元素可以像 <form> 一样具有 "action"吗?

javascript - 检查是否从 Javascript 设置了 $_SESSION 变量

javascript - 如何使用 Javascript 从输入字段中获取值?

javascript - DIV 元素相对 HTML 内容

javascript - 语法错误,无法识别的表达式 : , $(selector).before (",");

Javascript - 鼠标悬停/移出事件同时在所有同级元素上触发

javascript - 无法使用 Angular 将文件上传到 Rails 服务器

javascript - UPNP 与 Blackberry Playbook