关闭

js原型链与闭包

标签: javascript闭包
204人阅读 评论(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
查看评论

JavaScript概念总结:作用域、闭包、对象与原型链

1 JavaScript变量作用域 1.1 函数作用域 没有块作用域:即作用域不是以{}包围的,其作用域完成由函数来决定,因而if /for等语句中的花括号不是独立的作用域。 如前述,JS的在函数中定义的局部变量只对这个函数内部可见,称之谓函数作用域。 嵌套作用域变量搜索规则:当在函数中引用...
  • zzulp
  • zzulp
  • 2012-11-03 20:49
  • 17720

JavaScript原型、闭包、继承和原型链等等总结

几年之前学习过Javascript,当时学得比较浅显,现在又开始学了,发现Javascript其实挺难的,有些地方还是得花时间去理解的,于是看了很多的视频和博客,自己在这里小小的总结下。。。 1.一切(引用类型)都是对象,对象是属性的集合。       undefine...
  • Ocean111best
  • Ocean111best
  • 2016-09-17 21:10
  • 2082

js重点浅谈(跨域,作用域和作用域链,闭包,原型和原型链继承)

一.跨域问题的解决方法 啥是跨域: 所有的浏览器都遵守同源策略,保证一个源的动态脚本不能读取或操作其他源的http响应和cookie,这就使浏览器隔离了来自不同源的内容,防止它们互相操作。所谓同源是指协议、域名和端口都一致的情况。 怎么解决跨域问题: 1.第三方网站开启HTTP的Acce...
  • loguat
  • loguat
  • 2017-07-19 17:30
  • 330

Javascript 作用域 闭包 原型和原型链

转载自:http://www.cnblogs.com/yehui-mmd/p/5847201.html 【作用域】 javascript中的作用域可以理解为一个语句执行的环境大小,有全局的作用域,函数作用域和eval作用域。在JS中没有块级作用域。 讲到作用域,不得不讲执行环境,执行环境在...
  • u013292889
  • u013292889
  • 2017-03-23 23:38
  • 204

记我的第一次面试总结——闭包和原型链

最近投了数多简历,大都了无音讯,昨天有幸收到了新蛋集团的面试电话,在今天上午进行了电话面试,面试的小哥十分和蔼,声音听起来很舒服,也特别有耐心,可惜自己回答的并不好,结果就顺其自然吧。但是通过这次面试,我对自己的了解加深了不少,一是自己除了前端基础的知识之外,对于网络协议及算法方面的知识了解太少,二...
  • Young_Light_Lu
  • Young_Light_Lu
  • 2018-01-04 14:31
  • 122

【JavaScript】5.面试题一原型和原型链

一、题目 1、如何准确判断一个变量是数组类型? var array=[]; console.log(array instanceof Array);//true 判断引用类型的具体类型要用instanceof console.log(typeof array);//Obj...
  • benben513624
  • benben513624
  • 2017-09-28 07:03
  • 677

js难点精解-----原型和原型链的关系和应用

首先,要明确,在js中:      1、每个函数对象都有一个 prototype属性,我们称之为原型属性      2、每个对象都有一个 __proto__ 属性,(其实是指向他构造函数的原型)   &#...
  • ITzhongzi
  • ITzhongzi
  • 2018-01-11 12:55
  • 92

浅谈JavaScript原型链继承方式与闭包

JavaScript中的继承方式有两种,一种是通过call或apply方法借用构造函数,另一种方法则是通过原型来继承。 这篇文章用于梳理自己关于prototype继承的知识点,也略微涉及一点点闭包的概念。
  • saturn4711
  • saturn4711
  • 2016-03-19 11:33
  • 649

浅析JavaScript原型链与原型链式继承

原型链与原型链式继承上篇总结了下JavaScript的作用域链的问题,欢迎拍砖!浅析JavaScript作用域链继上篇总结中提出的情况 同样都是链,但这两个链往上追朔的顶点是不一样的;并且为了增强我们对js继承的理解。 总结一下JavaScript原型链的问题。prototype属性首先我们要知...
  • SirM2z
  • SirM2z
  • 2016-01-10 20:44
  • 1100

闭包经典面试题

闭包应该是前段面试中经常碰到的面试题,很多人都会在这个问题上被问住。如果想要弄清楚就要掌握闭包的概念; 首先看面试题: for (var i = 1; i   setTimeout( function timer() {       ...
  • donggx
  • donggx
  • 2017-04-14 14:13
  • 5663
    个人资料
    • 访问:1754次
    • 积分:124
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条