js では、オブジェクト リテラル メソッドを使用してオブジェクトを作成します (var obj={}; Object コンストラクターが呼び出されないのに、なぜインスタンスのままなのでしょうか?そのようなオブジェクトは空のオブジェクトであるべきではないでしょうか?そのプロトタイプが Object.prototype であるのはなぜですか?
我想大声告诉你2017-05-19 10:26:47
var obj = {}; は var obj = Object.create({});
と同等の単なる省略表現です。Object.create(null); は空のオブジェクトである可能性があります。
淡淡烟草味2017-05-19 10:26:47
これについて質問する必要がありますBrendan Eich
。
まずはあなたの定義を教えてください空对象
と思います。
タイトルの説明によると、空对象
应该是指最原始的那个对象原型吧?这个东西是有的,它是null
の意味は元のオブジェクトのプロトタイプを指すはずですよね?これは存在しますが、null
であり、すべてのオブジェクトのプロトタイプ チェーンの終わりです。
大家讲道理2017-05-19 10:26:47
概念的に言えば、オブジェクトはすべてのオブジェクトのルート オブジェクトとして定義され、「オブジェクト指向」の概念の最も基本的な単位 (参照) です。これが削除されると、概念全体が崩壊します。分子/原子?
そう、null 例外です。これ自体が特殊なケースです。js は最初はオブジェクトとして扱いますが、その後の Object.create(null) でいわゆる「空のオブジェクト」現象が発生します。最初に定義されているのが特別な値である場合、Object.create(null) などというものは存在しません。したがって、私の理解では、この「空のオブジェクト」は自己一貫性があり、定義において接続されており、「オブジェクト」として分類されるべきではありません。をコンセプトに