【JavaScript总结】JavaScript语法基础:JS高级语法

作用域链:
【JavaScript总结】JavaScript语法基础:JS高级语法_第1张图片
1.JS中只有函数能够限定作用域的范围;
2.变量处理在制定的函数范围内,还有一个特殊的作用域,就是没有用var 声明的全局作用域
3.js中的作用域链是为了清晰的表示出所有变量的作用范围,同一作用范围的变量处在同一作用域链上
4.在script中表示的第一个作用域链:0链,如果有函数,表示在这个位置第二个链,记为1链,依次得到2链,3链
5.变量的访问规则:现在当前作用域找,找不到就往上找,直到找到0链,还没有就抛异常
注意:
函数也是变量
【JavaScript总结】JavaScript语法基础:JS高级语法_第2张图片
沙箱模式:为了安全,不污染别的变量

(function(){})();

闭包
  闭包就是函数里面的变量而已,只不过它在函数里面,这个整体就叫做闭包,别人访问不到它,它就形成一个壁垒一样,被包裹的东西
  它就像墙一样包裹起来,你看到不到它。
  对应了JavaScript的面向对象的特性,使之具有私有变量
  【JavaScript总结】JavaScript语法基础:JS高级语法_第3张图片
使用时:为了防止性能损失,可以使用闭包先存一部分数据

Var foo1= function(){ };
Var foo2=(function(){})(); 

函数的四种调用形式

  1. 函数调用 this(全局变量)
  2. 方法调用 this (当前对象)
  3. 构造器调用 this(表示创建当前对象)
  4. apply与call调用 上下文调用,this根据参数自定义

面向对象与原型
JavaScript对象:键值对
JavaScript方法:值为函数的属性
JavaScript原型:对象继承实体
 C系继承模型
   例如:C++,C#,Java
   继承:模板类
 原型继承
   例如:JavaScript
   继承:(实体),有一个对象存在,构造函数设置原型为这个对象;创建出来的对象就继承了这个对象(从对象那里继承)
   原型:就是函数的prototype属性
   【JavaScript总结】JavaScript语法基础:JS高级语法_第4张图片
 原型链
   每个对象有一个属性 叫_proto_,这个属性就是对象的原型
   所以,需要原型,那就一定要有函数
   高级
     对象有原型,而原型也是对象,原型也有原型
     所有对象来自于Object对象
     所有函数来自于Function对象
   【JavaScript总结】JavaScript语法基础:JS高级语法_第5张图片
   所有的函数是对象,继承自Function.prototype
               Function.prototype是对象,继承自Object.prototype
                               Object.prototype是对象,继承自null

原型系统中
  操作对象的成员
  读取操作:从当前向上寻找,找到为止
  修改操作:在当前找,找到就用,没有找到就创建

你可能感兴趣的:(②,b/s)