Javascript 与原型的链接?出于名称空间的目的

Javascript 与原型的链接?出于名称空间的目的,javascript,Javascript,说我有一条狗 function Dog(name) { this.name = name; } 我想在它的原型上命名一些函数 Dog.prototype.movement = { this.run = this.name + 'is running', this.jump = function() { console.log(this.name + 'is jummping');} } 所以我可以这样称呼它: var carl = new Dog('Car'); carl.mov

说我有一条狗

function Dog(name) {
  this.name = name;
}
我想在它的原型上命名一些函数

Dog.prototype.movement = {
  this.run = this.name + 'is running',
  this.jump = function() { console.log(this.name + 'is jummping');}
}
所以我可以这样称呼它:

var carl = new Dog('Car');
carl.movement.jump();
//Carl is jumping.

您很接近,只需将
run
jump
视为对象属性,而不是变量赋值:

Dog.prototype = {
  movement: function() {
    return {
      run: function() { 
        this.name + 'is running' 
      }.bind(this),
      jump: function() { 
        console.log(this.name + ' is jummping');
      }.bind(this)
    }
  }
}

var carl = new Dog('Car');
carl.movement().jump();

您将如何调用这些函数,以便
引用
实例?我明白了,为了在
的上下文中,您需要使movement成为一个返回绑定到父上下文的
run
/
jump
方法的方法,否则范围将绑定到movement对象。我将用一个例子更新我的答案。我想我可以使用
call
而不是
bind
?顺便说一句,回答得很好。感谢@FelixKling指出您的答案。我需要一些时间来尝试一下,但在我尝试之后,我想你会得到我的复选标记@Rob M。如果你真的想这样做,你必须在构造函数中添加这些函数。看见