オブジェクトが存在しない場合のみ新たにオブジェクトを生成する

説明

オブジェクト存在しない場合のみメソッド/プロパティを設定するには||を使います。||の前に調べたいオブジェクト名を記述し、||の後にオブジェクトの定義を記述します。||は演算子で||の左側が偽(false, null, undefined)であれば||以後の処理を行います。このため、すでにオブジェクトが定義されていれば||の前のオブジェクトが、そうでなければ以後に続く処理が行われることになります。
 ||で判別しなくてもifを利用し「if(!オブジェクト) オブジェクトの定義」とすることもできます。||を利用した場合にプログラムが読みにくいのであればifを使うのが良いでしょう。
JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>オブジェクトが存在しない場合のみ新たにオブジェクトを生成する</h1>
<form action="./newobj.cgi" method="get" name="mainForm">
<input type="button" id="makeButton1" value="ボタン1">
<input type="button" id="makeButton2" value="ボタン2">
<input type="button" id="makeButton3" value="textの内容を表示">
</form>
<div id="result">結果:</div>
</body>
</html>

var mainObj;
window.onload = function(){
document.getElementById("makeButton1").onclick = function(){
mainObj = mainObj || { "text" : "JavaScript" };
document.getElementById("result").innerHTML = mainObj.text;
}
document.getElementById("makeButton2").onclick = function(){
mainObj = mainObj || { "text" : "ECMAScript" }
document.getElementById("result").innerHTML = mainObj.text;
}
document.getElementById("makeButton3").onclick = function(){
document.getElementById("result").innerHTML += "<br>"+mainObj.text;
}
}