Javascript 如何使用原型方法更改类中的值?
在下面的代码中,我试图使用prototype方法.rest将isTired属性的值更改为true。当我用mammy.rest()或mammy.rest.bind(妈咪)来称呼它时,它变成了真。如果我打电话给妈咪,我会在结果为真后立即报警 但是,如果我删除调用,它会将该值变为false。我查看了其他堆栈溢出响应,我相信这可以通过使用bind解决。我读过MDM,但似乎找不到保留价值的方法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; }
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
elsethis.isTired=false代码>
如果你想调用rest()
,你应该mommy.rest()代码>。非常简单如果你在评论mom(),你就不会调用rest()。妈妈。休息。捆绑(妈妈)!=妈妈,休息