私は Require.js をよく理解していないと思うので、下の例のように (グローバルに) firstName と lastName を変更できる理由を尋ねたかったのです。
Require.js は、グローバル スコープの汚染を回避するための処理を行うべきではありませんか? オブジェクトのコンテンツを変更するためではなく、オブジェクトを作成するためのインターフェイスを提供しているだけです。どうもありがとう。
// someModule.js
define([], function() {
function Employee(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Employee.prototype.getName = function() {
return this.firstName = ' ' = this.lastName;
}
return {
createEmployee: function(fName, lName) {
return new Employee(fName, lName);
};
};
});
// main.js
require(['jquery', 'someModule'], function($, someModule) {
$(function() {
var x = someModule.createEmployee('John', 'Doe');
document.write(x.getName() + '<br>');
x.firstName = 'Some other name';
x.lastName = 'Some other surname';
document.write(x.getName());
});
});
出力は次のとおりです。
John Doe
他の名前 他の姓