一个函数字面量基础问题!

var obj = {
    f1: function() {
        var p = new this.f2()
        Object.assign(this, p)
        console.log(1, this)
    },
    f2: function() {
        console.log(2, this)
        this.f3 = function() {
            console.log(3, this)
        }
    }
}

(上面是示例代码,实际代码是下面小程序的)
现在我在f2里面获取this是一个{imageLoaded: ƒ ()},为什么不是指向objthis,我要怎么做才可以把f3添加到obj,又能在f2中有指向objthis?

Page({
    f1: function() {
        console.log(this) //{}
        
        this.imageLoaded = function() {}
    },
    f2: function() {
        const p = new this.f1()
        Object.assign(this, p)
    },
})

<image src="{{item}}" hidden bindload="imageLoaded"></image>
阅读 1.4k
2 个回答

你想Page接收options做上下文 但是Page已经指定了上下文了。可不可以直接注册f3 来实现代码逻辑呢

示例代码没问题。
实际代码里的this就只能看缘分了,你指定的是一个{}this,如果要和Page发生关系,那是Page具体实现的问题,一般来说,你上面f1f2的所有this都是不对的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题