作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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
添加到我的依赖项中。当我这样做时,即使 ImageWrapper
是 undefined
,我的代码也会默默地失败,没有任何错误消息。如果我尝试记录 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/
我是一名优秀的程序员,十分优秀!