最近在研究javascript,也看了一些讲原型链的博客。但总觉得不是全对,主要有如下几个问题。
我们将javascript定义为两种对象,一种是一般对象,一种是函数对象。现在存在如下几个问题:
1、prototype是属于函数对象还是一般对象?
2、prototype是引用还是个对象。
3、_proto_属性是在二者对象中都存在,还是只在一般对象中存在?
4、假如都存在,那么在函数对象和一般对象中的关系是怎么样的?
求大神回答。
1, 一般对象
2,引用,javascript的对象都是引用
3,都存在
4,问题很奇怪
我觉得楼主可能没理解函数的prototype属性和隐藏的Function.prototype的关系,那两个是不同的东西
javascript,the good parts里面这么写的, 我觉得你理解了这个就应该没什么疑问了。
Every function object is also created with a prototype property. Its value is an object
with a constructor property whose value is the function. This is distinct from the
hidden link to Function.prototype. The meaning of this convoluted construction will
be revealed in the next chapter.
prototype存在于函数对象中吧,而且在函数对象中存在指向这个对象的引用吧?
@LiloT: 那段英文你理解了吗,一个是prototype属性,是当函数用作构造函数的时候,这个prototype就变成了新创建对象的prototype,另外一个是函数对象本身的prototype,它定义了一些函数的,比如call和apply,就是函数对象本身的原型的方法。
结构大概是这样的。
javascript高级程序设计(简称红宝书),解决任何js底层问题