首页 > 解决方案 > 修改函数变量中的变量

问题描述

我想知道如何在匿名函数中访问和修改变量 a,我尝试输入箭头,但我进入浏览器:未定义

 import * as Konva from 'konva';

export class classTest {

    public a: number;

    access(){ 

        var stage = new Konva.Stage({ container: 'container', width: 400, height: 250 });

        var layer1 = new Konva.Layer();
        var imageObj = new Image();
        var self = this
        imageObj.onload = function () {

            self.a = 150

            var yoda = new Konva.Image({
                x: 50,
                y: 50,
                image: imageObj,
                width: 106,
                height: 118
            });
            layer1.add(yoda);
            //stage.add(layer1)

        };
        imageObj.src = '/assets/images/yoda.jpg';
        //console.log(a)

如果我在 layer1 中添加一个宽度 = a 的矩形,它将与您解释的相同(我得到一条线),那么我该怎么做。

        var box = new Konva.Rect({
            x: 20, y: 20,
            width: this.a, 
            height: 50,
            fill: '#00D2FF', stroke: 'black',
            strokeWidth: 4
       });

       stage.add(layer1)
    }

标签: javascriptjavascript-objectskonvajs

解决方案


console.log(this.a);

早于执行

imageObj.onload

这就是为什么你得到undefined

内部imageObj.onload一切正常。


推荐阅读