我对JavaScript OOP和require.js
都很陌生我正在学习使用require.js来提高应用程序的可伸缩性,我试图谷歌搜索文章,但由于我的JavaScript背景不佳而没有真正理解。
我想出了这个编码。
define([], function() {
function Employee(empName) {
return {
_empName: empName,
getEmployeeName: function() {
return _empName;
}
}
}
});
define([], function() {
function Customer(customerName) {
this._customerName = customerName;
this.getCustomerName = function() {
return this._customerName;
}
}
return(Customer);
});
我为Employee和Customer原型尝试了两种不同的编码风格。
require(['customer', 'employee'], function(Customer, Employee) {
c = new Customer('Boy');
console.log('Customer name is ' + c.getCustomerName());
e = new Employee('Mike');
console.log('Employee name is ' + e.getEmployeeName());
});
这是我得到的结果。
我的问题是,在customer.js中进行编码只能来声明原型以便与require.js一起使用?
我的理解是,require.js总是只会将依赖关系注入类(非实例)吗?
通过回答这两个简单的问题来帮助我进入下一步的学习,任何建议的文章都会非常感激,(我真的不知道要搜索哪些特定主题)。
由于
答案 0 :(得分:1)
我的问题是,在customer.js中编码只是声明使用require.js原型的方法吗?
没有。使用原型与使用require.js无关。
我的理解是,require.js始终只将依赖关系注入类(非实例)吗?
没有。它会从模块定义中注入您返回的任何内容。在employee.js
的情况下,这不算什么;并且Employee
最终成为undefined
。
请修改您的员工代码:
define([], function() {
function makeEmployee(empName) { // it's not a constructor - don't capitalize
// it shouldn't be invoked with `new` either
return {
_empName: empName,
getEmployeeName: function() {
return this._empName; // it's a property, not a variable
}
}
}
return makeEmployee; // return the function to become the module!
});