- 主题:javascript 中,函数的原型对象 是啥?
噢,对,this不应该出现在属性里···
【 在 ottffsse 的大作中提到: 】
: 你这有语法错误。
:
--
FROM 111.204.241.*
注意 对象 的 内置[[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属性。
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 每一个函数都包含一个prototype属性,这个属性是指向一个对象的引用,这个对象称
: 做“原型对象” (prototype object )。每一个函数都包含不同的原型对象。
: 那么到底是啥?
: ...................
--
FROM 183.95.135.*
再看一下,输出三个值。
【 在 ottffsse 的大作中提到: 】
: 试一下不就知道了?这么明显的。
:
--
FROM 111.204.241.*
【 在 zzjyingzi (十六点五) 的大作中提到: 】
: 理解javascript是基于对象的,这个就不难理解。
: 因为基于对象,所以才有原型链,变量、方法是挂接在对象上的,在方法中的直接体现就是this的指向,函数默认this指向的对象在浏览器中是window,window默认挂接全局变量和方法,而prototype就是指向对象的API,这样可以将函数的指向对象更换为其他对象,比如可以
: var a = 1;
: function asd(){
: alert(this.a);
: }
: asd();//这时候this指向window
only applies to top-level function calls.
function calls in another function without a base ref
has `this' set to undefined.
: asd.prototype.s = function(){
: this.a = 2;
: alert(this.a);
: };
: var z = new asd(); //构造之后this就指向新的作用域,这时候函数的this为undefined
: z.s(); //这时候是2
--
FROM 202.120.55.*
【 在 zzjyingzi (十六点五) 的大作中提到: 】
: 理解javascript是基于对象的,这个就不难理解。
因为基于对象,所以才有原型链,变量、方法是挂接在对象上的,在方法中的直接体现就是this的指向,函数默认this指向的对象在浏览器中是window,window默认挂接全局变量和方法,而prototype就是指向对象的API,这样可以将函数的指向对象更换为其他对象,比如可以
var a = 1;
function asd(){
alert(this.a);
}
asd();//这时候this指向window
asd.prototype.s = function(){
this.a = 2;
alert(this.a);
};
var z = new asd(); //构造之后this就指向新的作用域,这时候函数的this为undefined !!!!!!!!!!!!!!!这句会弹出对话框,之所以对话框里是undefined,不是因为this是undefined而是因为this.a是undefined.
z.s(); //这时候是2.!!!!!!!!!这时候是2的原因是this被动态绑定为z。
【 在 zhanghaoX 的大作中提到: 】
: 那某个函数的原型对象到底是什么?具体的
--
FROM 183.95.135.*
不要挑语病···说得不能很明确的解释理解的和代码的。
我这有事,抽出的5分钟时间···
【 在 ottffsse 的大作中提到: 】
: 因为基于对象,所以才有原型链,变量、方法是挂接在对象上的,在方法中的直接体现就是this的指向,函数默认this指向的对象在浏览器中是window,window默认挂接全局变量和方法,而prototype就是指向对象的API,这样可以将函数的指向对象更换为其他对象,比如可以
: var a = 1;
: function asd(){
: ...................
--
FROM 111.204.241.*
以前的js模拟OO继承的基本方式。很多动态的继承链玩法都与此类似。
【 在 zhanghaoX 的大作中提到: 】
:每一个函数都包含一个prototype属性,这个属性是指向一个对象的引用,这个对象称
:做“原型对象” (prototype object )。每一个函数都包含不同的原型对象。
:
:...................
--
FROM 123.103.8.*
你指的是用 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.*
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 你指的是用 new Function( ) 来定义函数的情况吗?
no.
: 如果是 函数定义表达式 或 函数声明 来定义函数 ,那么函数的原型对象是啥?
http://www.ecma-international.org/ecma-262/6.0/index.html#sec-function-definitions-runtime-semantics-evaluation
the prototype property is set on Perform MakeConstructor(closure).
--
FROM 202.120.55.*
发信人: 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.*