検索

ホームページ  >  に質問  >  本文

javascript - オブジェクトが純粋なオブジェクトかどうかを判断するための jQuery ソース コードの isPlainObject 関数について

リーリー

以下は異議申し立てコードに記載されているコードです

リーリー

jQuery 3.2.1 では、オブジェクトが純粋なオブジェクトかどうかを判断する関数の最後の 2 行が、私が自分でテストしたときに等価ではありませんでした。何が問題なのかお聞きしたいです。

リーリー ###私に聞いて###

    出力が
  1. false になる理由

  2. Object.hasOwnProperty.call(proto, "constructor") && proto.constructor;

    意味

  3. Object.hasOwnProperty.toString.call( Object )

    出力は function Object() { [ネイティブ コード] }Object.hasOwnProperty です。 .toString.call(Number)
    出力はfunction Number() { [ネイティブ コード] } Why です。

phpcn_u1582phpcn_u15822728日前705

全員に返信(1)返信します

  • 巴扎黑

    巴扎黑2017-06-12 09:30:36

    リーリー

    1. var obj = function(){}; は、この関数の機能を誤解しているため、 false を返します。これは、関数による作成を意味するのではなく、 new Object(); を意味します。

    Object.hasOwnProperty.toString.call(Number) は、関数 Number() { [ネイティブ コード] } として出力されます。これは、Object.hasOwnProperty.toString がオブジェクトのコンストラクター関数を文字列形式で返し、呼び出しメソッドが Object.hasOwnProperty toString から借用するためです。方法。

    返事
    0
  • キャンセル返事