Javascript - 在未定义的对象上调用 new
Javascript - call new on undefined object
我正在使用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();
});
它按预期抛出引用错误。
相关文章:
- new Datamap() 在调用之间保持内存的共享状态
- 当我调用“new”时,JavaScript类的哪些部分会在内存中重新创建
- 调用Class.prototype=new MyClass()是否确保每次都重新实例化超类
- 当在运行nodejs的服务器上调用new Date()时,Date将返回服务器启动时的日期
- Javascript - 在未定义的对象上调用 new
- jshint 和 Function() gets:调用构造函数时缺少“new”前缀
- 在 new Model() 上返回一个函数,然后能够在返回的函数上再次调用 new
- 当调用返回相同对象的函数时,无论是否作为构造函数调用,我都应该使用“new”吗
- 在 Javascript 中使用闭包在对象上调用 new
- JavaScript 继承为什么我需要同时调用 fun.call 和 prototype = new Obj( )
- 对现有对象调用new Object()的Javascript优化
- 如何从Javascript中使用new调用的构造函数返回null
- javascript's ' new Date() '使用什么系统调用?
- 在Angular中调用Array Into New Array来执行Filter
- “new"匿名函数调用前返回对象
- 为什么调用带有new的函数时不返回相同的引用?
- 我们可以在箭头函数上调用new吗?
- 何时对new使用调用操作符
- 如果变量=新模型.每次调用变量时都会调用new
- 是所有的函数声明&在幕后调用new Function()创建的表达式