Javascript 如何使用原型方法更改类中的值?

Javascript 如何使用原型方法更改类中的值?,javascript,class,bind,Javascript,Class,Bind,在下面的代码中,我试图使用prototype方法.rest将isTired属性的值更改为true。当我用mammy.rest()或mammy.rest.bind(妈咪)来称呼它时,它变成了真。如果我打电话给妈咪,我会在结果为真后立即报警 但是,如果我删除调用,它会将该值变为false。我查看了其他堆栈溢出响应,我相信这可以通过使用bind解决。我读过MDM,但似乎找不到保留价值的方法 var SuperHero = function() { this.isTired = false; }

在下面的代码中,我试图使用prototype方法.rest将isTired属性的值更改为true。当我用mammy.rest()或mammy.rest.bind(妈咪)来称呼它时,它变成了真。如果我打电话给妈咪,我会在结果为真后立即报警

但是,如果我删除调用,它会将该值变为false。我查看了其他堆栈溢出响应,我相信这可以通过使用bind解决。我读过MDM,但似乎找不到保留价值的方法

var SuperHero = function() {
    this.isTired = false;
}

SuperHero.prototype.rest = function() {
    this.isTired = true;
    console.log(this.isTired)
}

var SuperHuman = function(greeting) {
  SuperHero.call(this)
    this.greeting = greeting;
    this.speed = 'normal';
}

SuperHuman.prototype = Object.create(SuperHero.prototype)
SuperHuman.prototype.constructor = SuperHuman
var mommy = new SuperHuman('hola')


var mom = mommy.rest.bind(mommy)
mom() // -> outputs true
mommy.isTired //-> outputs true if I keep mom(), but if i delete it it turns false

你的代码基本上是正确的,但最后你会搞混

第一行之后的一切都是错误的

var mommy = new SuperHuman('hola')

var mom = mommy.rest.bind(mommy)
// mom() // -> outputs true
mommy.isTired //-> outputs true if I keep mom(), but if i delete it it turns false
只要这样做:

var mommy = new SuperHuman('hola')
mommy.rest();
// mommy.isTired is now true
只要您对
mommy
的引用存在,
isTired
将保持为真,直到/除非另一个函数更改它


在这种情况下,使用
bind
对您没有任何帮助。所有的
bind
都是在另一个
this
的上下文中执行一个函数。这在这种情况下不适用。

您想用什么做

var mom = mommy.rest.bind(mommy)
您正在将新的上下文
this
设置(绑定)到函数rest()。因此在
rest()
中,this===Superhuman的类型,其值为
mommy
对象

当您调用
mom()
时,它会调用
rest()
然后设置
this.isTired=true
else
this.isTired=false

如果你想调用
rest()
,你应该
mommy.rest()。非常简单

如果你在评论mom(),你就不会调用rest()。妈妈。休息。捆绑(妈妈)!=妈妈,休息