如何在另一个js文件中实例化javascript类?
假设我在file1.js中定义了一个类如何在另一个js文件中实例化javascript类?,javascript,Javascript,假设我在file1.js中定义了一个类 function Customer(){ this.name="Jhon"; this.getName=function(){ return this.name; }; }; 现在如果我想在file2.js中创建一个Customer对象 var customer=new Customer(); var name=customer.getName(); 我得到一个例外:客户未定义,不是构造函数。 但是当我在file
function Customer(){
this.name="Jhon";
this.getName=function(){
return this.name;
};
};
现在如果我想在file2.js中创建一个Customer对象
var customer=new Customer();
var name=customer.getName();
我得到一个例外:客户未定义,不是构造函数。
但是当我在file2.js中创建一个customer对象并将其传递给file1.js时,它就开始工作了
file1.js
function Customer(){
this.name="Jhon";
this.getName=function(){
return this.name;
}
}
function customer(){
return new Customer();
}
file2.js
var customer=customer();
var name=customer.getName();
但是我想使用new customer()在file1.js中创建一个customer对象。我怎样才能做到这一点 如果在HTML中使用javascript,则应在HTML中包含
file1.js
和file2.js
:
<script src="path_to/file1.js"></script>
<script src="path_to/file2.js"></script>
注意,
file1
应该放在file2
之前使其工作的可能建议:
一些修改(您忘记在语句中包含分号this.getName=function(){…}
它应该是this.getName=function(){…};
)
(这可能是问题之一。)
及
确保以正确的顺序链接JS文件
<script src="file1.js" type="text/javascript"></script>
<script src="file2.js" type="text/javascript"></script>
这取决于您运行的环境。在web浏览器中,您只需确保在
file2.js
之前加载file1.js
:
<script src="file1.js"></script>
<script src="file2.js"></script>
还可以使用库在HTML中使用节点的模块样式。在文件2中运行代码之前,请确保已加载dom。。。如果您正在使用jQuery:
$(function(){
var customer=customer();
var name=customer.getName();
});
然后,无论文件的顺序如何,在加载所有文件之前,代码都不会运行。您可以导出您的方法以从其他文件访问,如下所示: file1.js
var name = "Jhon";
exports.getName = function() {
return name;
}
file2.js
var instance = require('./file1.js');
var name = instance.getName();
它表示该值是未定义的,因为它是一个构造函数
函数
,而不是带有构造函数的类
。要使用它,您需要使用Customer()
或Customer()
首先,您需要在file2.js之前加载file1.js,正如slebetman所说:
<script defer src="file1.js" type="module"></script>
<script defer src="file2.js" type="module"></script>
以及file2.js,如下所示:
export default class Customer(){
constructor(){
this.name="Jhon";
this.getName=function(){
return this.name;
};
}
}
import { Customer } from "./file1";
var customer=new Customer();
如果我错了,请纠正我。尽管此解决方案非常有效,但这需要在nodejs配置中设置babel。不要用艰苦的方式学习@克里希纳——这可能是我的问题。当类在单独的文件中定义时,文件之间传递的实例不会识别类实例并允许使用方法。您是否有指向babel安装解决方案的链接?@user172431npm安装babel cli babel core--保存开发人员
。搜索[我得到两个错误。一,SyntaxError:export声明可能只出现在模块的顶层
2,ReferenceError:require没有定义
@AaronFranke,require
上面是针对Node.js
应用程序的,但是有一个require.js
库文件可以添加到项目中[npmjs.com/package/require.js]或[npmjs.com/package/require.js]。ReferenceError:require未定义
更改订单对我有效。谢谢
<script defer src="file1.js" type="module"></script>
<script defer src="file2.js" type="module"></script>
export default class Customer(){
constructor(){
this.name="Jhon";
this.getName=function(){
return this.name;
};
}
}
import { Customer } from "./file1";
var customer=new Customer();