【constructor】在一个函数的原型上新增了一个方法,但是通过函数.方法名去调用就会报错,但是在函数的原型上可以看到那个方法

当在JavaScript函数的原型上添加方法,尝试通过函数名直接调用时出现错误,可能的原因是该函数尚未被实例化。确保先创建函数实例再调用原型上的方法。
摘要由CSDN通过智能技术生成

        function Game(){
            this.dom = document.querySelector('#canvas')
            this.ctx = this.dom.getContext('2d')

            this.R = {
                'changge':'./images/wyyc.png',
                'sea':'./images/xxdj.png',
                'city':'./images/zfjg.png',
                'zg':'./images/zg.png',
                'ztly':'./images/ztly.png',
                'xx':'./images/xx.png'
            }
            let imgUrl = Object.keys(this.R)
            // console.log(imgUrl)
            let allMount = imgUrl.length
            let count = 0
            let that = this
            for(var i in this.R){
                // 先备份地址
                var src = this.R[i]

                this.R[i] = new Image()
                this.R[i].src = src


                // 预存一份canvas
                var self = this
                console.log(self.start)
                this.R[i].onload = function(){
                    count ++
                    self.ctx.clearRect(0,0,canvas.width,canvas.height)

                    self.ctx.font = '16px Arial'

                    self.ctx.fillText('图片已经加载了'+count+'/'+allMount+'张',10,50)
                    if(count == allMount){
                        self.ctx.drawImage(self.R['xx'],100,100,600,300)
                    }
                }
            }
        }
        // console.log(this.Game.prototype.start)
        Game.prototype.start = function(){
            // var self = this
            // this.ctx.drawImage(this.R['xx'],300,300,100,100)
            console.log(123)
        }
        // Game()
        new Game()

很有可能是因为整个函数你并没有实例化,导致执行不了这个原型上的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值