发信人: ottffsse (nothing), 信区: WebDev
标 题: Re: javascript 中,函数的原型对象 是啥?
发信站: 水木社区 (Tue Oct 13 13:53:09 2015), 站内
注意 对象 的 内置[[Prototype]]条目 和 prototype属性 是不一样的。
为了明确区分二者,我们不妨把[[Prototype]]称为对象的“继承”条目。
函数是对象。所以函数也继承某个东西。比如:
var x=(function f(){});
//则x 继承 Function.prototype。
//但x.prototype不同于Function.prototype。x.prototype继承Object.prototype。
var y=new x;
//y继承x.prototype. y本身没有prototype属性。
蝴蝶书里边的:
-------------------------------------------------------------------
JavaScript 中的函数就是对象。对象是“名/值”对的集合并拥有一个连到原型对象的隐藏连
接。对象字面量产生的对象连接到Object.prototype. 函数对象连接到Function.prototype (该原型对象本
身连接到Object.prototype )。每个函数在创建时会附加两个隐藏属性: 函数的上下文和实现函数行为的代码 。
每个函数对象在创建时也随配有一个prototype 属性。它的值是一个拥有constructor
属性且值即为该函数的对象。这和隐藏连接到Function.prototype 完全不同。这个令人
费解的构造过程的意义将会在下个章节中揭示。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这俩段就是你说的意思吧?
-------------------------------------------------------------------
当一个函数对象被创建时, Function 构造器产生的函数对象会运行类似这样的一些代码:
this.prototype = {constructor: this};
新函数对象被赋予一个prototype 属性,它的值是一个包含constructor 属性且属性值
为该新函数的对象。这个prototype 对象是存放继承特征的地方。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 新函数对象被赋予的prototype属性是一个指向其自身的对象?
因为JavaScript 语言没
有提供一种方站去确定哪个函数是打算用来做构造器的,所以每个函数都会得到一个
prototype 对象。constructor 属性没什么用,重要的是prototype 对象。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这里说的prototype 对象 就是指 函数的prototype 属性吧?
-------------------------------------------------------------------
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 每一个函数都包含一个prototype属性,这个属性是指向一个对象的引用,这个对象称
: 做“原型对象” (prototype object )。每一个函数都包含不同的原型对象。
: 那么到底是啥?
: ...................
--
FROM 106.39.16.*