• ..

JavaScript

    あるオブジェクトのプロパティの有無を調べる

    Object#hasOwnProperty

    プロトタイプオブジェクトを辿らずにそのオブジェクトがプロパティを持っているか調べれます。これはオブジェクトのメソッドですが、対象のオブジェクトがhasOwnPropertyを持っている可能性などが可能性は低いですがある為メソッドでの呼び出しは良くありません。以下のようにcallから呼び出すとほぼ確実にメソッドのhasOwnPropertyが呼び出せてより安全です。

    Object.prototype.hasOwnProperty.call({foo: 'foo'}, 'foo');
    // true
    ({foo: 'foo', hasOwnProperty: () => false}).hasOwnProperty('foo');
    // false

    in

    プロパティ名 in オブジェクトでも調べることができます。こちらはプロトタイプを遡り調べることができます。

    'hasOwnProperty' in Object
    // true

    もちろん、ただのプロパティの有無も調べられますよ。

    'foo' in {foo: 'foo'}
    // true