Uncaught TypeError:无法读取未定义的属性“ canvas”-Javascript对象

R.Yanbakan癌症

我对如何使用,定义,更改和取消设置javascript对象感到困惑。

我的JavaScript对象是:

var Ship = function(){
    return {
        canvas: $('#area')[0],
        canvas_width: this.canvas.width,
        canvas_height: this.canvas.height,
        context: this.canvas.getContext("2d"),
        ship_image: new Image(),
        ship_width: null,
        ship_height: null,
        ship_x: 0,
        ship_y: 0,
        init: function() {
            this.ship_image.onload = function() {
                this.ship_width = this.width;
                this.ship_height = this.height;
                this.ship_x = (this.canvas_width / 2) - (this.ship_width / 2);
                this.ship_y = this.canvas_height - this.height;

                this.draw(
                    this.ship_x,
                    this.ship_y
                );
            }

            this.ship_image.src = "ship.gif";
        },
        draw: function(x, y) {
            this.context.drawImage(
                this.ship_image,
                x,
                y
            );
        }
    }
}();

当我执行这段代码时;

$(function(){
    Ship.init();
    Controller.init();
});

我每次都会收到此错误。

Uncaught TypeError:无法读取第4行(ship.js)上未定义的属性'width'

未捕获的TypeError:第29行上的Ship不是函数(index.html / Ship.init())

我现在应该怎么办?

dfsq

问题在于,this.canvas它不指向canvas对象属性ship,而是指向全局对象window您需要进行canvas_width不同的初始化,例如在init函数中。并且与context

var Ship = function () {
    return {
        canvas: $('#area')[0],
        ship_image: new Image(),
        ship_width: null,
        ship_height: null,
        ship_x: 0,
        ship_y: 0,
        init: function () {

            this.context = this.canvas.getContext("2d");
            this.canvas_width = this.canvas.width;
            this.canvas_height = this.canvas.height;

            this.ship_image.onload = function () {
                this.ship_width = this.ship_image.width;
                this.ship_height = this.ship_image.height;
                this.ship_x = (this.canvas_width / 2) - (this.ship_width / 2);
                this.ship_y = this.canvas_height - this.ship_image.height;

                this.draw(this.ship_x, this.ship_y);
            }.bind(this);

            this.ship_image.src = "ship.gif";
        },
        draw: function (x, y) {
            this.context.drawImage(this.ship_image, x, y);
        }
    }
}();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript Uncaught TypeError:无法读取未定义的属性“ 0”

来自分类Dev

Electron JavaScript Uncaught TypeError:无法读取未定义的属性“on”

来自分类Dev

Javascript Uncaught TypeError:无法读取未定义的属性

来自分类Dev

Javascript Uncaught TypeError:无法读取未定义的属性“推送”

来自分类Dev

js -Uncaught TypeError:无法读取对象(球)处未定义的属性“x”

来自分类Dev

Uncaught TypeError:无法读取JavaScript中未定义的属性“ width”

来自分类Dev

Uncaught TypeError:无法设置未定义JavaScript的属性“ width”

来自分类Dev

在 javascript Uncaught TypeError 中使用数组的动态循环时,for 循环中的问题:无法在 saveSign 读取未定义的属性“id”

来自分类Dev

Ember Uncaught TypeError:无法读取未定义的属性“ yield”

来自分类Dev

React Uncaught TypeError:无法读取未定义的属性“ __reactAutoBindMap”

来自分类Dev

jQuery Uncaught TypeError:无法读取未定义的属性“ nodeType”

来自分类Dev

Leaflet Uncaught TypeError:无法读取未定义的属性“ geosearch”

来自分类Dev

Uncaught TypeError:无法读取未定义的属性“结果”-ReactJS

来自分类Dev

ReactJS Uncaught TypeError:无法读取未定义的属性“concat”

来自分类Dev

Ajax Uncaught TypeError:无法读取未定义的属性“长度”

来自分类Dev

Axios在React中未定义,错误:Uncaught TypeError:无法读取未定义的属性“ post”

来自分类Dev

无法读取未定义的属性“ canvas”

来自分类Dev

TypeError:无法读取未定义的属性“ filter”-数据对象

来自分类Dev

TypeError:无法读取未定义的JavaScript属性“ push”

来自分类Dev

TypeError:无法读取JavaScript中未定义的属性“ push”

来自分类Dev

TypeError:无法读取未定义Javascript的属性'forEach'

来自分类Dev

JavaScript TypeError:无法读取未定义的属性“ eat”

来自分类Dev

Javascript - TypeError:无法读取未定义的属性“类型”

来自分类Dev

Uncaught TypeError:无法读取未定义的属性“行”-Google可视化API

来自分类Dev

Uncaught TypeError:无法使用React读取未定义的属性“ map”

来自分类Dev

如何修复Uncaught TypeError:无法读取未定义的属性'prototype'?

来自分类Dev

jQuery Uncaught TypeError:无法读取drupal中未定义的属性“ msie”

来自分类Dev

Uncaught TypeError:无法读取未定义的属性“ left”(但可在jsfiddle中使用?)

来自分类Dev

Uncaught TypeError:无法使用Sweet Alert读取未定义的属性'then'

Related 相关文章

  1. 1

    Javascript Uncaught TypeError:无法读取未定义的属性“ 0”

  2. 2

    Electron JavaScript Uncaught TypeError:无法读取未定义的属性“on”

  3. 3

    Javascript Uncaught TypeError:无法读取未定义的属性

  4. 4

    Javascript Uncaught TypeError:无法读取未定义的属性“推送”

  5. 5

    js -Uncaught TypeError:无法读取对象(球)处未定义的属性“x”

  6. 6

    Uncaught TypeError:无法读取JavaScript中未定义的属性“ width”

  7. 7

    Uncaught TypeError:无法设置未定义JavaScript的属性“ width”

  8. 8

    在 javascript Uncaught TypeError 中使用数组的动态循环时,for 循环中的问题:无法在 saveSign 读取未定义的属性“id”

  9. 9

    Ember Uncaught TypeError:无法读取未定义的属性“ yield”

  10. 10

    React Uncaught TypeError:无法读取未定义的属性“ __reactAutoBindMap”

  11. 11

    jQuery Uncaught TypeError:无法读取未定义的属性“ nodeType”

  12. 12

    Leaflet Uncaught TypeError:无法读取未定义的属性“ geosearch”

  13. 13

    Uncaught TypeError:无法读取未定义的属性“结果”-ReactJS

  14. 14

    ReactJS Uncaught TypeError:无法读取未定义的属性“concat”

  15. 15

    Ajax Uncaught TypeError:无法读取未定义的属性“长度”

  16. 16

    Axios在React中未定义,错误:Uncaught TypeError:无法读取未定义的属性“ post”

  17. 17

    无法读取未定义的属性“ canvas”

  18. 18

    TypeError:无法读取未定义的属性“ filter”-数据对象

  19. 19

    TypeError:无法读取未定义的JavaScript属性“ push”

  20. 20

    TypeError:无法读取JavaScript中未定义的属性“ push”

  21. 21

    TypeError:无法读取未定义Javascript的属性'forEach'

  22. 22

    JavaScript TypeError:无法读取未定义的属性“ eat”

  23. 23

    Javascript - TypeError:无法读取未定义的属性“类型”

  24. 24

    Uncaught TypeError:无法读取未定义的属性“行”-Google可视化API

  25. 25

    Uncaught TypeError:无法使用React读取未定义的属性“ map”

  26. 26

    如何修复Uncaught TypeError:无法读取未定义的属性'prototype'?

  27. 27

    jQuery Uncaught TypeError:无法读取drupal中未定义的属性“ msie”

  28. 28

    Uncaught TypeError:无法读取未定义的属性“ left”(但可在jsfiddle中使用?)

  29. 29

    Uncaught TypeError:无法使用Sweet Alert读取未定义的属性'then'

热门标签

归档