es6 原型链 js 学习

45 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情 ES6

1、声明变量

(1).Let 不能重复生命

let start = “张三”

let start = “里斯” 这是错误的会报错

(2) 块级作用域

(3) 不存在变量提升

Console.log(song) //undefined

Var song = ‘恋爱达人’

Let song = ‘恋爱达人’ (会直接报错)

(4) 不影响作用域链(神魔是作用域链)

2、闭包:在一个作用域中可以访问另一个作用域的变量

闭包特点:延展了函数的作用域范围

image.png debugger 的时候可以用在里面可以查看 变量的 值(f11 进入函数)

scope 里面的 locul是局部作用域 Globul是全局作用域的意思 Closure就是闭包的意思 例:

image.png

3、面向对象的特性:封装性 继承性 多态性(又叫抽象)

在javaScript中创建对象的模板是构造函数

而在其他语言中创建对象的模板是

// 一个简单的构造函数
function Leilei(name,obj,score){
  this.name = name 
  this.obj = obj
  this.score = score
  this.ins =  function(){
    console.log(this.name,this.obj,this.score)
  }
}
var lei1 = new Leilei('李敏','语文',100)
var lei2 = new Leilei('zhangsan','shuxue',20)
lei1.ins()
lei2.ins()

image.png let hero = []

console.log( typeof hero ) (结果为Object) typeof可以判断基本数据类型

hero instanceof Arrary (结果为true)instanceof可以判断复杂类型

4、构造函数的执行过程

constructor 构造器/构造函数(对象的一个属性)

console.log( hero.constructor ) //获取对象的具体类型

image.png instanceof 判断某个对象是否是某个构造函数的实例/对象

console.log( hero instanceof Hero )

var arr = []

console.log( arr instanceof Array )

5、作用域链的查找规则 (一层一层去查找的)

VO对象 就是全局对象 Global

创建AO对象 AO就是局部变量 scope (locul)

image.png

image.png 6、foo的父级作用域是 Go(也就是全局作用域) 跟他的调用位置没有关系

所以最后打印的是Hello Global 7、JS的内存管理

1、javaScript 会在定义变量时为我们分配内存

  1. JS对于基本数据类型的内存分配会在执行时,直接在栈空间进行分配

JS对于复杂数据类型内存的分配会在堆内存中开辟一块空间,并且将这一块空间的指针返回值变量引用