长话短说 之 js的原型和闭包

Posted 你好,年轻人......

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长话短说 之 js的原型和闭包相关的知识,希望对你有一定的参考价值。

原型链:undefined, number, string, boolean 属于简单的值类型,函数、数组、对象、null、new obj()都是引用类型。检测值类型用typeof x 即可,检测引用类型obj instanceof object 是否为true。

那你发现function 和 object 有什么区别呢? 大名鼎鼎的jquery 竟然是个function  typeof $=>function 。其实对象是通过函数创建的。

每个函数都有一个原型prototype,每个对象都有一个__proto__,所谓的原型链就是:访问一个对象的属性时,__proto__属性中查找,如果没有,再沿着__proto__这条链向上找到prototype,这就是原型链。

fn.__proto__===Fn.prototype;

this ,取何值,是在函数真正被调用执行的时候确定的。可以记住三种情况:

  1. 在全局函数中this等于window
  2. 当函数被当做某个对象的方法调用时,this等于那个对象
  3. 匿名函数的执行环境具有全局性,this通常指向window

自由变量,要到创建这个函数的那个作用域中取值。

闭包,它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。好好理解这句话,闭包的原理是不是恍然大悟。应用情况无非就是两种:

函数作为返回值;函数作为参数传递。

 


以上是关于长话短说 之 js的原型和闭包的主要内容,如果未能解决你的问题,请参考以下文章

js基础知识:闭包,事件处理,原型

原型模式故事链--JS变量作用域作用域链闭包

JS面试题(进阶)——原型链、this指向、闭包

js-高级(原型与原型链作用域与作用域链闭包)

js闭包,原型,作用域等再一次理解

作用域链闭包和原型链