gpt4 book ai didi

Javascript - 在 undefined object 上调用新的

转载 作者:行者123 更新时间:2023-11-30 00:12:21 24 4
gpt4 key购买 nike

我正在使用 require.js 来组织我的 js:

define([
'underscore',
'sylvester',
'glUtils',
'GLFacade',
'Item',
'Attribute',
'Buffer',
], function(
_,
sylv,
glUtils,
GLFacade,
Item,
Attribute,
Buffer
) {
"use strict";
function Sprite() { this.init.apply(this, arguments); }

_.extend(Sprite.prototype, {
init: function(prog, img, viewPort) {
this._frameNum = 0;
this._framesPerAnimation = 4;
this._prog = prog;
this._viewPort = viewPort;
this._img = new ImageWrapper(img);

//...other initialization stuff...
},

//...other methods...

});

return Sprite;

});

但我总是遇到错误,忘记在文件顶部添加模块。上面我忘记将 ImageWrapper 添加到我的依赖项中。当我这样做时,即使 ImageWrapperundefined,我的代码也会默默地失败,没有任何错误消息。如果我尝试记录 console.log(ImageWrapper) 我确实会收到错误。

为什么对 new ImageWrapper(img) 的构造函数调用不会因错误而失败?是否有类似 "use strict;" 的东西可以用来增加开发过程中的错误信息?

最佳答案

您可以使用类似 http://jshint.com/ 的工具检查您的代码- 你会得到类似的东西:

One undefined variable
27 ImageWrapper

根据您的设置,有不同的方法可以自动执行此操作,一些编辑器内置了此功能,或者插件可以扩展此功能。如果您想手动运行 jshint,npm 上还有一个命令行版本:https://npmjs.org/package/jshint

您的代码应该会抛出错误,但前提是您实例化了一个new Sprite

当我尝试像这样简化您的代码时

define('Sprite', ['underscore'], function(_) {
'use strict';

function Sprite() {
this.init.apply(this, arguments);
}

_.extend(Sprite.prototype, {
init: function() {
this._foo = new DoesntExist();
}
});

return Sprite;
});

require(['Sprite'], function(Sprite) {
var sprite = new Sprite();
});

它按预期抛出 ReferenceError。

关于Javascript - 在 undefined object 上调用新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com