is not a constructor

木头是猫 2017-08-29 05:33:54
最近在学习requirejs,引入jquery之类的正常,但引入orienter文件,来自https://github.com/shrekshrek/orienter
会报错Orienters is not a constructor,初学者百思不得其解,不知道怎么修改
require(["orienter"],function(Orienter){
var o2 = new Orienter();
})

如果不使用requirejs,直接在页面上这样操作则正常
<script src="orienter.js"><script>
<script>
var o2 = new Orienter();
</script>
...全文
2058 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
functionsub 2017-08-30
  • 打赏
  • 举报
回复
或者像这样:
define(function (){
     function Orienter(){}
  return Orienter; // 这里直接返回构造函数,就不用改什么了
});
functionsub 2017-08-30
  • 打赏
  • 举报
回复
所谓模块化编程,就是把你定义的模块划分成一个一个模块,当需要的时候引入。 所以你报错的代码里,Orienter其实是一个模块对象,而不是一个构造函数。 所以要修改你orienter.js里面的代码,让其符合requirejs模块定义。 一般来说是这样的:
  define(function (){
     function Orienter(){}
    return {
      Orienter: Orienter
    }; // 这里return的对象就是每次你require的回调函数的实参
  });
在使用的时候就要这样:
require(["orienter"],function(orienterModlue){
    var o2 = new orienterModlue.Orienter();
})
模块定义与使用的时候得符合AMD规范。

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧