- 主题:javascript 中,函数的原型对象 是啥?
每一个函数都包含一个prototype属性,这个属性是指向一个对象的引用,这个对象称
做“原型对象” (prototype object )。每一个函数都包含不同的原型对象。
那么到底是啥?
--
FROM 111.196.70.*
那某个函数的原型对象到底是什么?具体的
【 在 zzjyingzi 的大作中提到: 】
: js是基于对象的,prototype相当于一个附加在方法上的作用域对象,this指向这个作用域对象,用new构造会创建新的作用域,用call或apply会用当前作用域对象代替目标方法的作用域对象。
: --
: wuxing是我偶像,你要是和他过不去就是和我过不去,找他麻烦就是找我麻烦,人身攻击他就是人身攻击我,14d他就是14d我,他妈就是我妈,他爸就是我爸,他lp就。。。不是我lp。万一偶像跟谁急了,我就跟谁急,我可不光是表面急,我也内急。。。
: ...................
--来自微水木3.2.0
--
FROM 61.148.242.*
arrow function?
【 在 XeCycle 的大作中提到: 】
: your book is too old, arrow functions do not have a "prototype" property.
:
: F.prototype is the prototype of the newly-created object passed to F
: ...................
--来自微水木3.2.0
--
FROM 61.148.242.*
你指的是用 new Function( ) 来定义函数的情况吗?
如果是 函数定义表达式 或 函数声明 来定义函数 ,那么函数的原型对象是啥?
【 在 XeCycle (据说是小 X) 的大作中提到: 】
: your book is too old, arrow functions do not have a "prototype" property.
: F.prototype is the prototype of the newly-created object passed to F
: as "this" context when evaluating "new F" or "new F(...)".
--
FROM 106.39.16.*
发信人: 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.*
发信人: 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.*