JavaScript对象系统深入剖析-2.函数对象

2.       函数对象(Function Object)

 

@吴穹Adam (新浪微博)

 

注意:阅读2之前,请先阅读1.对象:http://blog.csdn.net/adwu73/article/details/7219044

 

函数对象首先是一个对象,所以,它也有__proto__链接,也有Delegation。函数对象还有一个特殊之处就是它会有一个叫做prototype的属性(又是prototype?, 对,这就是我一直用__proto__链接来代表上文提到的prototype linkage,这样可以避免混淆)。

 

当用var Class = function(){}定义一个函数时,JS会生成一个函数对象F,函数对象F的__proto__指针指向Function.prototype, 同时F还会有一个property属性,property属性的引用一个新创建的对象p,这个对象p只有一个属性是构造函数constructor(),构造函数constructor()的值就是函数对象F,而对象p的__proto__指针则指向Object.Prototype,如下图:

JavaScript对象系统深入剖析-2.函数对象_第1张图片 

 

了解了函数对象,再看看它如何发挥作用:当用new激活一个函数时,一个新对象会被创建出来,其内容是执行函数的返回结果,而这个对象的__proto__链接指向函数的prototype属性所引用的对象

,如下面的例子所示:

JavaScript对象系统深入剖析-2.函数对象_第2张图片 

抽象一下,就是这样:

JavaScript对象系统深入剖析-2.函数对象_第3张图片

如果看到这里,还觉得不太明白,最好再去看看 3.对象创建 http://blog.csdn.net/adwu73/article/details/7224356

补记:推荐大家去看一下这个博客,解释的会更详细,有更多例子: http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html

 

你可能感兴趣的:(JavaScript,function,新浪微博,object,prototype,Constructor)