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

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: ƒ ()},为什么不是指向obj的this,我要怎么做才可以把f3添加到obj,又能在f2中有指向obj的this?


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>


Cats萌萌
浏览 426回答 2
2回答

一只斗牛犬

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

慕尼黑的夜晚无繁华

示例代码没问题。实际代码里的this就只能看缘分了,你指定的是一个{}的this,如果要和Page发生关系,那是Page具体实现的问题,一般来说,你上面f1,f2的所有this都是不对的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript