原型和原型链:

题目,知识点,解答;

1.如何准确地判断一个变量是数组类型

2.写一个原型链继承的例子

3.描述new一个对象的过程

4.zepto(或其他框架)源码中如何使用原型链。

知识点

构造函数:

构造函数-扩展

原型规则和示例:

原型链:

instanceof:

构造函数:

 function Foo(name,age){
this.name = name
this.age = age
this.class = 'class-1'
}
var f = new Foo('Zhang','20')

构造函数-扩展:

原型规则和示例:

5条原型规则,原型规则是学习原型链的基础

1.所有的引用类型(数组,对象,函数),都具有对象特性,即可自由扩展属性(除了,null,意外)

2.3.所有的引用类型(数组,对象,函数),都具有一个_proto_(隐士原型)属性,属性值是一个普通的对象,直接指定他的构造函数的prototype属性值,直接指向他的构造函数的

prototype类型属性值。

4.所有的函数,都有一个prototype(显示)属性,属性值也是一个普通的对象。

5.当试图得到一个对象的属性值时,如果这个对象本身没有这个属性,那么会去他的__proto__(即他的构造函数的prototype)中寻找。

循环对象自身的属性

原型链:

作用域和闭包:

范围:一段<script>或者一个函数

全局:变量定义,函数声明。

函数:变量定义,函数声明,this,arguments

全局声明:就是把变量的声明都放到前面去。

call,apply,bind:

  fn()

        function fn1(name,age){
alert(name)
console.log(this)
}
fn1.call({x:100},'zhangshan',20) var fn2 = function (name,ag){
alert(name)
console.log(this)
}.bind({y:200})
fn2.call({x:100},'zhangshan',20)

作用域链:

在自己的下的小函数体内没有,去上一级作用域找没有在去上一级查找,这个叫作用域链。

        //块级作用域
var name
if(true){
name = 'zhangshan'
}
console.log(name) // //作用域,a是一个全局作用域
var a = 100;
function fn(){
var b = 200
console.log(a) //自由变量
console.log(b)
}
fn() //作用域链
var a = 100
function f1() {
var b = 200
function f2(){
var c = 300 console.log(a)
console.log(b)
console.log(c)
}
f2()
}
f1()

闭包:

闭包的使用场景

函数作为一个返回值(返回上一个demo)

函数作为参数传递(自己思考)

function F1(){
var a = 100
return function () {
console.log(a) //自由变量,父作用域寻找
}
}
var f1 = F1()
var a = 200
f1()
//函数作为返回值
//函数作为参数传递
function F1(){
var a = 100
return function () {
console.log(a) //自由变量,父作用域寻找
}
}
var f1 = F1()
function F2(fn){
var a = 200
fn()
}
F2(f1)

闭包的总结:

变量的提升:变量的定义,函数的声明

说明this的几种不同使用场景:作为构造函数的执行,作为普通函数的执行,call,Apply ,bind

作用域和闭包的解题代码:

最新文章

  1. UVALive 7143 Room Assignment(组合数学+DP)(2014 Asia Shanghai Regional Contest)
  2. FMS直播流发布时 Microphone Speex 编码设置注意事项
  3. CPU阿甘
  4. [OSG][转]osg格式文件
  5. [团队项目]sprint3 &amp; 团队贡献分。
  6. SAP CRM 最新简介文字(2007年、中英文)
  7. 通过ASP禁止指定IP和只允许指定IP访问网站的代码
  8. owa Your request can&#39;t be completed right now. Please try again later.
  9. spring占位符解析器---PropertyPlaceholderHelper
  10. zoj2977Strange Billboard (国家压缩+罗列)
  11. Redis学习-String
  12. PyMySQL模块的使用
  13. __init__特殊方法
  14. linux用curl发送post请求
  15. U盘重装Win10系统视频教程
  16. Linux基础操作文件等基础操作
  17. css长度单位学习(em,rem,px,vw,vh)
  18. Interlij idea
  19. 学习Java的进度
  20. 【转】.MD语法入门

热门文章

  1. Flask理论基础(一)加载配置文件
  2. mysql的下载
  3. 【颓废篇】Py:从零开始的poj自动提交
  4. 【JZOJ3918】蛋糕
  5. 一起看下Apache1.3.22版本改进和修正了啥?
  6. BeanFactory 和 ApplicationContext 区别
  7. thinkphp 性能调试
  8. 思维题——牛客多校第六场D
  9. 27 和为S的两个数字
  10. 浅析php命令执行