javascript - js には実際の空のオブジェクトがないのはなぜですか?
世界只因有你
世界只因有你 2017-05-19 10:24:47
0
4
565

js では、オブジェクト リテラル メソッドを使用してオブジェクトを作成します (var obj={}; Object コンストラクターが呼び出されないのに、なぜインスタンスのままなのでしょうか?そのようなオブジェクトは空のオブジェクトであるべきではないでしょうか?そのプロトタイプが Object.prototype であるのはなぜですか?

世界只因有你
世界只因有你

全員に返信(4)
我想大声告诉你

var obj = {}; は var obj = Object.create({});

と同等の単なる省略表現です。

Object.create(null); は空のオブジェクトである可能性があります。

いいねを押す +0
淡淡烟草味
  1. これについて質問する必要がありますBrendan Eich

  2. まずはあなたの定義を教えてください空对象と思います。

  3. タイトルの説明によると、空对象应该是指最原始的那个对象原型吧?这个东西是有的,它是null の意味は元のオブジェクトのプロトタイプを指すはずですよね?これは存在しますが、null であり、すべてのオブジェクトのプロトタイプ チェーンの終わりです。

いいねを押す +0
我想大声告诉你

js には空のオブジェクトがあります

リーリー

真実を検証するための唯一の基準は実践です

いいねを押す +0
大家讲道理

概念的に言えば、オブジェクトはすべてのオブジェクトのルート オブジェクトとして定義され、「オブジェクト指向」の概念の最も基本的な単位 (参照) です。これが削除されると、概念全体が崩壊します。分子/原子?

new で作成してもリテラルを使用しても、コンパイラーはオブジェクトの祖先を自動的に認識します

そう、null 例外です。これ自体が特殊なケースです。js は最初はオブジェクトとして扱いますが、その後の Object.create(null) でいわゆる「空のオブジェクト」現象が発生します。最初に定義されているのが特別な値である場合、Object.create(null) などというものは存在しません。したがって、私の理解では、この「空のオブジェクト」は自己一貫性があり、定義において接続されており、「オブジェクト」として分類されるべきではありません。をコンセプトに

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート