アプリ開発サークル勉強会⑦ 開催日時 2021年2月13日(土) 7:00-9:00
本日もこちらの問題やりました!
Q31-35 https://gist.github.com/kenmori/1961ce0140dc3307a0e641c8dde6701d
Object.getOwnPropertyDescriptor
オブジェクトのプロパティの属性を返す。
属性については前回の勉強会でも取り上げましたが、復習もかねてもう一度。
JavaScriptにおけるオブジェクトのプロパティとは、オブジェクト指向におけるプロパティ(フィールド)と同じ意味だと考えられます。
つまり、プロパティとはなんらかの情報のことですね。
属性とは読み取り専用、書き込み専用など、のことをさします。
まずはtsuyahimeというオブジェクトを定義します。
let tsuyahime = { name: 'つや姫', color: 'white', origin: '山形' }
次にプロパティに定義されている属性を、getOwnPropertyDescriptorで表示させます。
console.log(Object.getOwnPropertyDescriptor(tsuyahime, 'origin'));
結果:
{ value: '山形', writable: true, enumerable: true, configurable: true }
デフォルトだと各属性の値はtrueのようです。
次はこれらの属性値を変更してみましょう。
defineProperty
属性値の定義、変更
まず各属性について、設定できる項目。
value:値
writable:書き込み
enumerable:列挙
configurable:削除
Object.defineProperty(tsuyahime, 'water', { value: 20, writable: false, enumerable: false, configurable: false }); // 書き込み tsuyahime.water = 30; // 列挙 console.log(Object.keys(tsuyahime)); // 削除 delete tsuyahime.water; console.log(tsuyahime.water);
結果:
[ 'name', 'color', 'origin' ] 20
値が変更されず、非列挙となり、削除できなくなりました。
可能にしたい場合はtrueに変更する
オブジェクトの参考サイト
map
配列の全ての要素を呼び出し、その結果の値を含む新しい配列を作成する。
今までは空の配列を作成し、配列の詰替えを行っていましたが、そんなことせずともできるように。
const nums = [1, 2, 3, 4, 5]; var newNums = nums.map(function (num) { return num; }) console.log(newNums);
結果:
[ 1, 2, 3, 4, 5 ]
引数追加することでindex番号と配列が取得できます。
このへんはforeachと一緒ですね。
他の言語でもindex番号が取れるので、覚えておきましょう。
var newNums = nums.map(function (num, index, arr) { console.log(index); console.log(arr); return num; });
結果:
[ 1, 2, 3, 4, 5 ] 1 [ 1, 2, 3, 4, 5 ] 2 [ 1, 2, 3, 4, 5 ] 3 [ 1, 2, 3, 4, 5 ] 4 [ 1, 2, 3, 4, 5 ]
argments
関数に渡された引数の値を含み、関数内からアクセスできる。
ちょっとした計算するときに使えそう。
function sum() { var total = 0; for (var i = 0; i < arguments.length; i++) { total += arguments[i]; } return console.log(total); } sum(1, 2);
結果:
3
ショートカットキー
vscodeのショートカットキーの話も出てきましたが。
表示→パレッド→基本設定:キーボードショートカットキーを開く
使えそうなショートカットキーはここで探すと良い。
CTRL + K CTRL + C コメントの追加
CTRL + C CTRL + U コメントの解除