Water Sunlight

軽量プログラミングの文法 - JavaScript/Python

ユーザ用ツール

サイト用ツール


js:object:object

JavaScript Objectオブジェクト

y2sunlight 2021-03-30

概要

全てのオブジェクトの共通的な性質/機能を提供する。

Objectメンバ(主要なもの) ※その他プロパティ/プロトタイプ/変更可否に関するものもある。

メンバ概要
constructorインスタンス化で使用されたコンストラクタ
toString()インスタンスの文字列表現の取得
toLocaleString()インスタンスの文字列表現の取得(地域依存)
valueOf()インスタンスの基本型表現の取得(基本型を取得)
create() ※与えられたオブジェクトから新しいインスタンスを作る
assign() *2015与えられたオブジェクトのコピー
is() *2015与えられたオブジェクトの比較

※ 静的メソッド

create()メソッド

Object.create(proto, props);  // 新しいオブジェクトを作る

いろいろなオブジェクトの作り方

// 方法1
var obj = {name:'taro', age:17};

// 方法2
var obj = new Object();
obj.name = 'taro';
obj.age = 17;

// 方法3
var obj = Object.create(Object.prototype, {
    name: {value:'taro', writable:true, configurable:true, enumerable:true},
    age: {value:17, writable:true, configurable:true, enumerable:true}
});
※詳しくはMDN参照


assign()メソッド

Object.assign(target, source1,);  // オブジェクトのマージ

Student1 = {name:'taro', age:17};
Student2 = {name:'hanako', tel:'090-1234-56789'};
Object.assign(Student1,Student2);
console.log(Student1);  // 結果 {name:'hanako', age:17, tel:'090-1234-56789'}
console.log(Student2);  // 結果 {name:'hanako', tel:'090-1234-56789'}
            
// マージせずに新しいオブジェクトを作る時
Object.assign({}, Student1);    // taroのみコピー
Object.assign({}, Student1, Student1, Student2);    // taroをコピーしてhanakoをマージ

不変オブジェクト

  • インスタンス生成後、一切の状態を変更できないオブジェクト
  • JavaScriptではObjectオブジェクトの静的メソッドを使用して不変オブジェクトを定義できる

《変更可否を操作する静的メソッド》

設定確認
プロパティの追加禁止preventExtensions(obj);isExtensible(obj)
プロパティの追加/削除禁止seal(obj)isSealed(obj)
プロパティの追加/削除/変更禁止
(不変オブジェクト)
freeze(obj)isFrozen(obj)

※Strictモードを有効にしないと変更しようとしても例外発生しない。有効にする事を推奨

js/object/object.txt · 最終更新: 2022/01/27 13:32 by tanaka