また、このようなコードを使用すると、OO JavaScriptコードを記述できます。 1つのユニットにまとまった機能だけをグループ化し、必要に応じてこのように多くのオブジェクトを構築する必要があります。
function buildFullName
は外部からアクセスできないため、プライベート機能です。
私はあなたに同意します。以前のJavaScriptの知識はありません。実際、関数はJavaScriptのファーストクラスのObjectです。関数内に関数を入れ子にすることができ、変数を持つことができますし、それらを組み合わせる方法はたくさんあります。Javaのような標準的な方法はありません。私は、記事JavaScript Closure 101は物事を少しクリアするのに役立つと思います。
/** This is our Object definition and constructor */
function Person(fname, lname) {
this.firstName = fname;
this.lastName = lname;
}
/** Anonymous function to avoid polluting the global namespace */
(function() {
/** This function will be defined public, we prefix the class name */
function Person_toString() {
//call buildFullName passing this, we could also call the function
//as buildFullName(), and it would work, but wouldn't have 'this'
return buildFullName.call(this);
}
/** Another public function */
function Person_buildGreeting() {
return "Hi " + this.firstName;
}
/** This function is private! */
function buildFullName() {
return this.firstName + " " + this.lastName;
}
/** Here we augment the Object with public functions */
Person.prototype = {
toString: Person_toString,
buildGreeting: Person_buildGreeting
};
})(); //execute the anonymous function immediately
使用例:
var p1 = new Person('Jenny', 'Fairview');
alert("toString()=" + p1.toString());
alert("buildGreeting()=" + p1.buildGreeting());
これらの質問はすべて記事で回答されていると思います。 – Blender
こんにちはブレンダー、悲しいことに、記事はあなたが既にJSをマスターしていると仮定しているので、私は – ajax333221
* workspace *と* workspace *のように説明しません。もしそうなら、* namespace *だけを使うように質問を編集できますか?そうでない場合は、あなたが意味することを説明してください。 – stivlo