关闭

js原型链与闭包

标签: javascript闭包
115人阅读 评论(0) 收藏 举报
分类:

        我是一名后端运维开发,对于大多数运维开发尤其是通讯行业,技术好像并不需要掌握得很牢固,也不需要很好的文凭,外包是不看文凭的,即使你才大三也能拿6k一个月的薪水。但是我觉得学一样就要掌握他的本质,这里面的东西都是我看了两遍王福朋的博客以及李战的悟透javascript之后写的总结笔记,当然会有提炼。

这里不讲js基础,就将闭包,函数与对象的关系是啥?对象是构造函数创建的,对象也可以是通过字典的形式组成,这两种方式是js中创建对象的方式。而函数也是对象,函数有一个属性是prototype,prototype是一个Object对象,那么是对象就可以为它增加属性,默认情况下prototype一个属性是constructor指向函数本身。那么函数也是对象,是对象也就有隐性原型__proto__,__proto__指向的是创建该对象的构造函数的原型,每一个对象的__proto__指向的都是创建该对象的构造函数的原型。这里有继承多态的味道了。

那么函数的prototype指向哪?比如

	function keep(name,age){
   		var name = name;
   		this.age= age;
   		alert('keep');
	}
创建函数keep的构造函数是function Function(),也就是说,函数keep的__proto__指向的是Function()的原型Function.prototype,Function.prototype一个属性constructor指向的就是这个函数的本身,而Function.prototype的隐藏原型指向的是哪呢?指向的是创建这个对象的构造函数的原型--->Obejct.prototype,这里Obejct.prototype的隐式原型指向哪里呢?也就是创建Object对象的构造函数的原型,但是这里的没有对象创建Object,所以Obejct.prototype.__proto__指向的是null。这条思路就是js的原型链,而闭包就是一句话,在函数内部的方法引用了该函数 的参数,由于内部方法引用了外部函数的局部变量,js垃圾回收机制不会释放这部分内存,js垃圾回收。
这些全是我自己的理解写出来的,有很多地方还是模糊的。最后贴出一张图,更新应该是必须的。


这里的这张图也是我手画的,能看出其形状么?没事,一条思路,既然是原型链,只要找到Obejct就可以顺着找到其所有的自对象。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1109次
    • 积分:96
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条