Das Obige ist mein Test im Browser. Ich kann diese Prototypenkette überhaupt nicht verstehen. Wer kann helfen, es zu erklären
Object 是一个函数,不要被它的名字误导了,所以先脑中补完这个形式
function Object () { ... }
任何函数(构造函数)都有原型,也就是prototype,prototype没什么特别的,就是一个对象。
Object.prototype 输出 “Object { ... }", 不要被这个输出误导,以为Object.prototype是它自己。输出里的“Object”只是说Object.prototype的值“是一个”Object“类型”的对象。
但同时因为JS里function本身也是对象,所以Object除了是函数,也是对象。所有的对象都是根据某个原型“构造”(初始化)而来的.
Object作为对象是什么时候构造的?
答:当它被定义的时候,也就是:
function Object() { ... }
这时JS运行时就依据 function () { [Native code] } 为原型构造了Object这个函数“对象”(实例)。
这个 function () { [Native code] } 是什么?它是JS里所有函数的祖宗。
Object.__proto__.__proto__ 即这个祖宗函数的原型,既然是祖宗怎么会有原型?记住它是函数的祖宗,但它不是“对象”的祖宗,对象的祖宗,就是这个 “Object {__defineGetter__: ...}" 。
你又问,既然对象都是构造而来的,那祖宗对象也应该是构造而来的吧?祖宗对象是万物起源,它是JS的语言设计者定义的,是概念体系的出发点。
可是我看到
Object.prototype.constructor function Object() { [native code] }
祖宗对象不明明是构造而来的?而且是由Object构造而来的?
这只不过是JS的语言设计者为了概念一致,把祖宗对象的constructor指向了Object而已。
祖宗对象之前是什么呢?
Object.prototype.__proto__ null
道生一,一生二。道是无。
itlr.cc
Object 是一个函数,不要被它的名字误导了,所以先脑中补完这个形式
任何函数(构造函数)都有原型,也就是prototype,prototype没什么特别的,就是一个对象。
Object.prototype 输出 “Object { ... }", 不要被这个输出误导,以为Object.prototype是它自己。输出里的“Object”只是说Object.prototype的值“是一个”Object“类型”的对象。
但同时因为JS里function本身也是对象,所以Object除了是函数,也是对象。所有的对象都是根据某个原型“构造”(初始化)而来的.
Object作为对象是什么时候构造的?
答:当它被定义的时候,也就是:
这时JS运行时就依据 function () { [Native code] } 为原型构造了Object这个函数“对象”(实例)。
这个 function () { [Native code] } 是什么?它是JS里所有函数的祖宗。
Object.__proto__.__proto__ 即这个祖宗函数的原型,既然是祖宗怎么会有原型?记住它是函数的祖宗,但它不是“对象”的祖宗,对象的祖宗,就是这个 “Object {__defineGetter__: ...}" 。
你又问,既然对象都是构造而来的,那祖宗对象也应该是构造而来的吧?祖宗对象是万物起源,它是JS的语言设计者定义的,是概念体系的出发点。
可是我看到
祖宗对象不明明是构造而来的?而且是由Object构造而来的?
这只不过是JS的语言设计者为了概念一致,把祖宗对象的constructor指向了Object而已。
祖宗对象之前是什么呢?
道生一,一生二。
道是无。
itlr.cc