【JavaScript】Objectの実例方法

3221 ワード

以下の内容は学習記録であり、MDN原文を参照することができる.
環境
  • node v 12.18.1
  • npm 6.14.5
  • vs scode 1.46
  • Microsoft Edge 83
  • 概念
    Objectのインスタンスに定義された方法を例示的な方法と呼ぶ.Object.prototypeの原型オブジェクトに定義する方法です.
    ハスOwnProperty
    hasOwnProperty()メソッドはブール値を返し、オブジェクト自体の属性に指定された属性があるかどうかを示します.
    const object1 = {};
    object1.property1 = 42;
    
    console.log(object1.hasOwnProperty('property1'));
    // expected output: true
    
    console.log(object1.hasOwnProperty('toString'));
    // expected output: false
    
    console.log(object1.hasOwnProperty('hasOwnProperty'));
    // expected output: false
    
    isPrototypeOf
    isProttypeOf()メソッドは、オブジェクトが他のオブジェクトのプロトタイプチェーン上に存在するかどうかをテストするために使用されます.
    function Foo() {}
    function Bar() {}
    function Baz() {}
    
    Bar.prototype = Object.create(Foo.prototype);
    Baz.prototype = Object.create(Bar.prototype);
    
    var baz = new Baz();
    
    console.log(Baz.prototype.isPrototypeOf(baz)); // true
    console.log(Bar.prototype.isPrototypeOf(baz)); // true
    console.log(Foo.prototype.isPrototypeOf(baz)); // true
    console.log(Object.prototype.isPrototypeOf(baz)); // true
    
    propertyIs Enumerable
    propertyIs Enumerableメソッドは、指定された属性が列挙できるかどうかを示すブール値を返します.
    const object1 = {};
    const array1 = [];
    object1.property1 = 42;
    array1[0] = 42;
    
    console.log(object1.propertyIsEnumerable('property1'));
    // expected output: true
    
    console.log(array1.propertyIsEnumerable(0));
    // expected output: true
    
    console.log(array1.propertyIsEnumerable('length'));
    // expected output: false
    
    toString
    String()メソッドは、オブジェクトを表す文字列を返します.toLocale StringはtoString()を呼び出した結果を返します.
    function Dog(name) {
      this.name = name;
    }
    
    const dog1 = new Dog('Gabby');
    
    Dog.prototype.toString = function dogToString() {
      return `${this.name}`;
    };
    
    console.log(dog1.toString());
    // expected output: "Gabby"
    
    valueOf
    valueOf()メソッドは、指定されたオブジェクトの元の値を返します.
    // Array:        
    var array = ["ABC", true, 12, -5];
    console.log(array.valueOf() === array);   // true
    
    // Date:     1970 1 1       
    var date = new Date(2013, 7, 18, 23, 11, 59, 230);
    console.log(date.valueOf());   // 1376838719230
    
    // Number:     
    var num =  15.26540;
    console.log(num.valueOf());   // 15.2654
    
    //   :     true false
    var bool = true;
    console.log(bool.valueOf() === bool);   // true
    
    // new  Boolean  
    var newBool = new Boolean(true);
    // valueOf()    true,      
    console.log(newBool.valueOf() == newBool);   // true
    //      ,       ,   boolean  ,   object  
    console.log(newBool.valueOf() === newBool);   // false
    
    // Function:      
    function foo(){}
    console.log( foo.valueOf() === foo );   // true
    var foo2 =  new Function("x", "y", "return x + y;");
    console.log( foo2.valueOf() );
    /*
    ƒ anonymous(x,y
    ) {
    return x + y;
    }
    */
    
    // Object:      
    var obj = {name: "  ", age: 18};
    console.log( obj.valueOf() === obj );   // true
    
    // String:      
    var str = "http://www.xyz.com";
    console.log( str.valueOf() === str );   // true
    
    // new       
    var str2 = new String("http://www.xyz.com");
    //       ,    ,      ,   string  ,   object  
    console.log( str2.valueOf() === str2 );   // false