问题:
我有一段代码会引发错误:this.isEmpty is not a function
,
我无法弄清楚为什么。以下是片段(jsfiddle):
function addAlbumGrid(){
const MainGrid = new AlbumGrid ()
return MainGrid
}
function AlbumGrid() {
MainGrid.call(this)
}
var parentPrototype = Object.create(AlbumGrid.prototype)
parentPrototype.constructor = MainGrid
MainGrid.prototype = parentPrototype
AlbumGrid.prototype.addPhotoBox = function () {
MainGrid.prototype.add.call(this)
}
function MainGrid(){
}
MainGrid.prototype = {
isEmpty: function() {
{
return false
}
},
add:function() {
if(!this.isEmpty())
{
return false
}
}
}
var AlbumGrid=addAlbumGrid()
AlbumGrid.addPhotoBox()
以下代码有效(jsfiddle):
function animal() {
}
animal.prototype = {
canWalk: function () {
return true
},
move: function () {
if(this.canWalk()) {alert ('moving')}
}
}
function bird() {
animal.call(this)
}
var animalProto = Object.create(animal.prototype)
animalProto.constructor = bird
bird.prototype = animalProto
bird.prototype.fly = function () {
animal.prototype.move.call(this)
}
let fluffy = new bird ()
fluffy.fly()
寻找帮助我降落在this page,是不是我在某个地方失去了this
的背景,它指的是我不想要的东西?
在这种情况下,使用合成的解决方案是一个选项(object.assign(..))吗?
或者它可以是其他什么?
我希望有人能说清楚。
谢谢...
Ps编辑:我现在已经更新了代码,前3条评论反映了这篇文章的旧版本。