JavaScriptのObject()を学ぶ

以下のページでJavaScriptを体系的に学んでいます。 www.mojage.club

本記事は、JavaScriptのObject()について纏めています。

Sponsored Link

Object()

Object()コンストラクタを使用すると基本的なオブジェクトを生成することが出来ます。以下は空のオブジェクトを生成しています。

    var person = new Object();

また、Object()コンストラクタは他のネイティブオブジェクトを生成する際にも使用できます。

    console.log(new Object('foo')); //string object
    console.log(new Object(1));     //number object
    console.log(new Object([]));    //array object
    console.log(new Object(function() {}));  //function object
    console.log(new Object(true));  //boolean object
    console.log(new Object(/\bt[a-z]+\b/));  //regex object

プロパティ/メソッド

Object()オブジェクトは、以下のプロパティを持っています。

種別 プロパティ/メソッド名
プロパティ prototype object.prototype

Object()オブジェクトのインスタンスは以下のプロパティ/メソッドを持っています。

種別 プロパティ/メソッド名
プロパティ constructor var myObject = {}; myObject.constructor;)
メソッド hasOwnProperty() var myObject = {}; myObject.hasOwnProperty();
メソッド isPrototypeOf() var myObject = {}; myObject.isPrototypeOf();
メソッド propertyIsEnumerable() var myObject = {}; myObject.propertyIsEnumerable ();
メソッド toLocaleString() var myObject = {}; myObject.toLocaleString();
メソッド toString() var myObject = {}; myObject.toString();
メソッド valueOf() var myObject = {}; myObject.valueOf();

オブジェクトリテラル

最初に生成したpersonオブジェクトをオブジェクトリテラルを使用して生成すると以下の様な記述になります。({}のブレイスを使用しない生成方法)

    var person = new Object();
    person.name = ['Bob', 'Smith'];
    person.age = 32;
    person.gender = 'male';
    person.interests = ['music', 'skiing'];
    person.bio = function(){
      alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
    };
    person.greeting = function(){
      alert('Hi! I\'m ' + this.name[0] + '.');
    };

以下にもう一度最初に生成した方を載せますので比較してみて下さい。

    var person = {
      name: ['Bob', 'Smith'],
      age: 32,
      gender: 'male',
      interests:['music', 'skiing'],
      bio: function(){
        alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
      },
      greeting: function(){
        alert('Hi! I\'m ' + this.name[0] + '.');
      }
    };

Object.prototypeの継承

全てのオブジェクトはObject.prototypeを継承しているので、インスタンスに設定されていないプロパティも参照することが出来ます。

    Object.prototype.foo = 'foo';
    var myString = 'bar';
    
    console.log(myString.foo);  // foo