JavaScript 指定されたオブジェクトを継承して新たなオブジェクトを生成する
指定されたオブジェクトを継承し新たなオブジェクトを生成する方法について解説。オブジェクトを継承し新たなオブジェクトを生成するには「Object.create()」メソッドを使います。JavaScriptでオブジェクトを継承して、新たなオブジェクトを生成するには、「Object.create()」メソッドを使います。最初のパラメータには継承元となるオブジェクトを指定します。2番目のパラメータはオプションで、プロパティに対して次の表の属性を設定することができます。なお、同時に設定する属性の設定値によってはエラーとなる場合があります。
属性値 | 説明 |
---|---|
value | プロパティ内容 |
writable | プロパティに書き込みができるかどうか。「true」なら書き込み可。「false」なら不可 |
enumerable | 列挙可能かどうか。「for…in」文での抽出対象になるかどうか。「true」なら列挙可能、「false」なら列挙不可 |
configurable | 再定義可能どうか。「true」なら再定義可能、「false」なら再定義不可 |
set | セッター。プロパティに値を書き込むときに実行する関数 |
get | ゲッター。プロパティから内容を取得するときに実行する関数 |
<body>
<script>
window.addEventListener("load" , function(){
var ele = document.getElementsByTagName("output")[0];
var company = { name : "山田商事", address: "東京都" };
var myCompany1 = Object.create(company);
var myCompany2 = Object.create(company, {
owner : {
value : "yamada", //プロパティの内容
writable: false, //書き込み可能かどうか
enumerable:true, //列挙可能。for…inで出力
configurable:false //再定義可能かどうか
},
stype:{
value : "男性", //プロパティの内容
writable: false, //書き込み可能かどうか
enumerable:false, //列挙不可。for…inで出力不可
configurable:true //再定義可能かどうか
}
});
//結果出力
outObj(company,"company");
outObj(myCompany1,"myCompany1");
outObj(myCompany2,"myCompany2");
//オブジェクトの内容を出力する関数
function outObj(obj, text){
var ele= document.getElementsByTagName("output")[0];
ele.innerHTML += "■"+text+"の内容<br>";
for(var i in obj){
ele.innerHTML += i + " = " +obj[i] + "<br>";
}
ele.innerHTML += "<hr>";
}
}, false);
</script>
<output></output>
</body>