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。如果你真的想这样做,你必须在构造函数中添加这些函数。看见