发信人: ottffsse (nothing), 信区: WebDev
标 题: Re: javascript 中,函数的原型对象 是啥?
发信站: 水木社区 (Tue Oct 13 21:28:01 2015), 站内
这里的混淆有些是标准的措辞造成的:
1)标准采用了[[Prototype]]和prototype;其实应该采用两个不同的名称
2)内置条目被称为内置属性,与我们平常所说的属性(named property)容易混淆。
为此,
1)内置的“继承谁”的条目应该用个 比如"__proto__"等名称与prototype区分
2)内置条目不要叫做属性。
这样,
我们来看:
首先Object.prototype的__proto__是null. Object.prototype是大多数对象继承的顶端。
Function.prototype的__proto__是Object.prototype。
Object的__proto__是 Function.prototype。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~???????????
Function的__proto__是Function.prototype。
每个constructor创建的对象都会继承该constructor的prototype。因此Function创建的继承Function.prototype, 因此,所有function,无论是new Function生成的还是function表达式生成的(function 表达式相当于new Function)都是这样。
每个new Function创建出来的function,记为f,都会有一个prototype。f.prototype继承Object.prototype,f.prototype有个constructor属性其值为f;但f.prototype可以被修改(很多情况下作为constructor也应该修改)
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 发信人: ottffsse (nothing), 信区: WebDev
: 标 题: Re: javascript 中,函数的原型对象 是啥?
: 发信站: 水木社区 (Tue Oct 13 13:53:09 2015), 站内
: ...................
--
FROM 106.39.16.*