これは、オンラインプログラミング学習サービス「ウェブカツ!!」にて、
javascript・jQuery部中級のオンライン学習で使用しているコードになります。
2.オブジェクトについて
jsで扱うものは全てオブジェクトかオブジェクトのように使える
オブジェクトはプロパティとメソッドがある
プロパティは値を保存しとく変数と同じで、オブジェクトの状態や特性を表すために使われる
メソッドは関数と同じで、オブジェクトの振る舞い(動き)を表すために使われる
2.1. オブジェクトの作り方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var human = {}; human.name = 'kazukichi'; // プロパティ human.age = 99; // プロパティ human.sex = '男'; // プロパティ human.sayInfo = function(){ // メソッド return '私は' + human.name + 'で年齢は' + human.age + 'で性別は' + human.sex + 'です。'; } console.log(human.sayInfo()); // こうやっても同じこと var human = { name: 'kazukichi', age: 99, sex: '男', sayInfo: function(){ // メソッド return '私は' + human.name + 'で年齢は' + human.age + 'で性別は' + human.sex + 'です。'; } }; console.log(human.sayInfo()); |
2.2. new演算子とは?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// new演算子 var obj1 = new Object(); var obj2 = {}; console.log(obj1); console.log(obj2); // newをつけなかった場合 var human = function(){ this.name = 'kazukichi'; this.say = function(){ return this.name; } } var obj1 = new human(); var obj2 = human(); console.log(obj1.say()); console.log(obj2.say()); // undefined console.log(obj1); console.log(obj2); // newは勝手にインスタンスを返却してくれる // newをつけなければ、ただ関数を実行しただけ var human = function(){ this.name = 'kazukichi'; this.say = function(){ return this.name; } return 'ただ実行しただけ'; } var obj2 = human(); console.log(obj2); |
2.3. 独自コンストラクタの作り方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// jsではコンストラクタはただの「関数」 // 関数内で呼び出すthisは呼び出し元のオブジェクトを参照する var Monster = function(name, hp, attack){ this.name = name; this.hp = hp; this.attack = attack; this.doAttack = function(){ console.log(this.name + 'は' + this.attack + 'のダメージを与えた'); } } // なので、newすれば、インスタンスがthisの参照先になる var babaa = new Monster('ババァ', 9999, 8000); var jijii = new Monster('ジジィ', 100, 1); console.log(babaa.doAttack()); console.log(jijii.doAttack()); // こう作ってるのと動きは同じになる(prototypeの中身が違ったりinstanceofの判定が違ったりと実際の中身は違う) var babaa = { name :'ババァ', hp : 9999, attack : 8000, doAttack : function(){ console.log(babaa.name + 'は' + babaa.attack + 'のダメージを与えた'); } }; var jijii = { name : 'ジジィ', hp : 100, attack : 1, doAttack : function(){ console.log(jijii.name + 'は' + jijii.attack + 'のダメージを与えた'); } }; console.log(babaa.doAttack()); console.log(jijii.doAttack()); |