このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
js:object:object [2021/03/30 10:22] tanaka |
js:object:object [2022/01/27 13:32] (現在) tanaka [概要] |
||
---|---|---|---|
行 3: | 行 3: | ||
--- // | --- // | ||
- | === 概要 === | + | ===== 概要 |
- | 全てのオブジェクトの共通的な性質/機能を提供する | + | 全てのオブジェクトの共通的な性質/機能を提供する。 |
- | >TODO:図 | + | Objectメンバ(主要なもの) ※その他プロパティ/ |
+ | |メンバ|概要| | ||
+ | |constructor|インスタンス化で使用されたコンストラクタ| | ||
+ | |toString()|インスタンスの文字列表現の取得| | ||
+ | |toLocaleString()|インスタンスの文字列表現の取得(地域依存)| | ||
+ | |valueOf()|インスタンスの基本型表現の取得(基本型を取得)| | ||
+ | |create() ※|与えられたオブジェクトから新しいインスタンスを作る| | ||
+ | |assign() <sup>[[js:top# | ||
+ | |is() < | ||
+ | ※ 静的メソッド | ||
+ | \\ \\ | ||
- | Objectメンバ(主要なもの) ※その他プロパティ/プロトタイプ/変更可否に関するものもある | + | ===== create()メソッド ===== |
+ | |||
+ | <code javascript> | ||
+ | Object.create(proto, props); | ||
+ | </ | ||
+ | |||
+ | === いろいろなオブジェクトの作り方 === | ||
+ | <sxh javascript; | ||
+ | // 方法1 | ||
+ | var obj = {name:' | ||
+ | |||
+ | // 方法2 | ||
+ | var obj = new Object(); | ||
+ | obj.name = ' | ||
+ | obj.age = 17; | ||
+ | |||
+ | // 方法3 | ||
+ | var obj = Object.create(Object.prototype, | ||
+ | name: {value:' | ||
+ | age: {value:17, writable: | ||
+ | }); | ||
+ | </ | ||
+ | ※詳しくは[[https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== assign()メソッド ===== | ||
+ | |||
+ | <code javascript> | ||
+ | Object.assign(target, | ||
+ | </ | ||
+ | |||
+ | <sxh javascript; | ||
+ | Student1 = {name:' | ||
+ | Student2 = {name:' | ||
+ | Object.assign(Student1, | ||
+ | console.log(Student1); | ||
+ | console.log(Student2); | ||
+ | |||
+ | // マージせずに新しいオブジェクトを作る時 | ||
+ | Object.assign({}, | ||
+ | Object.assign({}, | ||
+ | </ | ||
+ | \\ | ||
+ | |||
+ | ===== 不変オブジェクト ===== | ||
+ | |||
+ | * インスタンス生成後、一切の状態を変更できないオブジェクト | ||
+ | * JavaScriptではObjectオブジェクトの静的メソッドを使用して不変オブジェクトを定義できる | ||
+ | |||
+ | 《変更可否を操作する静的メソッド》 | ||
+ | | |設定|確認| | ||
+ | |プロパティの追加禁止|preventExtensions(obj); | ||
+ | |プロパティの追加/ | ||
+ | |プロパティの追加/ | ||
+ | ※Strictモードを有効にしないと変更しようとしても例外発生しない。有効にする事を推奨 | ||