整理js笔记

一、逻辑难点

1、临时包装对象(构造函数 String(), Number(), Boolean())

基础数据类型string  number  bollean 不是对象,但能使用一些方法和属性的原因是:

只要它们调用方法或属性时 , JavaScript就会 自动new 对应的构造函数,把它们 暂时 转换成对象;此时它们就继承了构造函数的方法和属性。方法或属性一旦引用结束,临时对象就会立即销毁。

null 和 undefined 任何情况都不能使用方法和属性,是因为它们没有构造函数

2、作用域

定义:变量或函数起作用的区域

分为: 局部/函数 作用域 和 全局作用域 

局部作用域特点:

调用函数时 才会执行代码 形成作用域,调用结束后作用域立即销毁;

访问变量时,自己有就访问自己的,没有就去访问上一级的;

在函数内部给未声明的变量赋值时,作用域链上一级 ,上面创建并赋值。

  

(预处理)函数运行时 会产生一个作用域

① 形参预编译 :提升形参变量声明  然后赋值 

① 函数内部 预编译: 提升变量声明 

② 提升函数 及其 函数体

③ 最后按照函数体内部的代码逻辑 执行代码

(函数调用时 ,是在声明的地方)

3、作用域链

① 函数声明时,产生一个作用域链,该作用域链 首先继承当前作用域

② 函数运行时 :对函数形参进行预编译 产生作用域1- -> 形参赋值,加入作用域链

③ 函数内部预编译 产生作用域2,加入作用域链 --> 执行逻辑代码

  (注:函数调用 是在 函数声明的地方  )

4、块级作用域

由大括号括起来的的块区,例如 if ,while , for 等。

① 在块级作用域中,不允许 var 和 function 定义相同名字的变量或函数;

② 没有变量提升,在全局预编译时,块级区域里面的 var 和 function 以相同规则提升在前面,但函数赋值为undefined ,函数体没有提升,只有在进入块级作用域时 , 立即释放。

( 其实相当于还在全局作用域内,只是对函数 let 、count有限制作用。函数体被暂时锁住)

5、this 指向问题

(司老师)

① 全局 下 ,this 指向  windows

② 构造函数 里面,this 指向 实例化对象

③ 普通函数 ,谁调用 指向谁;找不到谁调用的时候 this 指向 Windows。(找不到谁调用 是指 理论上的调用对象 不能用 标准的规定 表达)


④ 匿名函数 中this指向 Windows全局对象

⑤ 系统内置函数 (定时器)中的this 指向 全局对象

⑥ apply(),call(),bind() 绑定this指向为 指定对象

⑦eval()中的this 指向 调用上下文中的 this

⑧ 立即执行函数中的 this 指向 window

   this (蒋老师)
①是一个函数的调用者(指向离this最近的function、方法的调用者,如果找不到调用者则指向顶层对象)
②一个函数被执行根据它的业务场景可以有很多名称:闭包,回调函数, 事件处理程序, 构造函数, 方法, API, SDK,模块, 代码块

函数的运行一定有对象来调用;

6、构造函数

自己定义的函数 , 通过  new关键字 可以  实例化对象。函数名使用大驼峰命名法。

使用 new 时的隐式操作:

① 隐式创建 对象 this = { __proto__} 

② 执行代码

③ 隐式返回 this 对象 ;(当有显示返回值时 ,若为基础数据类型 , 则不起效果 返回值任然为 this 对象 ; 若为 引用数据类型  , 该数据则代替 this 对象 做返回值)

 27、原型对象

(1)定义:

① 原型 是构造函数 默认创建的一个属性 [[ prototype ]] 

② 原型 是一个对象, 自带属性  __proto__   和 constructor  ,constructor的值就是该函数

③ 原型 的所有属性 和方法 都能被该函数 实例化出来的对象 所继承 ,对象通过 __proto__  访问原型

(2)特点

① 实例化对象 里面的 __proto__  和 构造函数里面的  [[ prototype ]]  属性 指向一致

② 所有对象里面 都有  __proto__ 属性

③ 在讨论 prototype 时 ,是通过 函数 访问原型 ; 讨论  __proto__ 时 , 是通过 实例化对象 访问原型 的。

(3)使用

①提取 实例化对象 的共有 属性和方法

② 在内置构造函数 中 追加 实例化对象 的共有 属性和方法

28、原型链

① 原型链 相连原理: 

a .  所有 原型对象  都是 由 Object 构造函数  构造的,所以他们的__proto__ 都会指向 Object构造函数 原型对象,而 Object构造函数 原型对象的__proto__  指向 null;

b .  所有 构造函数 都是 Function 构造函数  的实例化对象 ,所以 构造函数里面的__proto__ 都指向  Function 构造函数 的prototype ;

c  . 所有 对象都包含 __proto__ 属性,函数也是特殊的对象

② 规则:对象访问属性 ,优先访问自己的属性;自己没有就访问原型上的  。直到 Object. prototype 没有则返回 undefined , 不会访问到 null 。

③ 使用情形: 通过 实例化函数 构造原型链 实现继承

通过 构造函数 的prototype  形成原型链 实现继承

函数  this   构造函数new  原型   变量的作用域   系统内置对象的功能  Object   arrey   字符串切割  闭包    同步异步

ES6

解构赋值  箭头函数   类和对象

二、各种概念和方法

1、数值的方法

  • Number()
  • parseInt()
  • parseFloat()
  • isNaN()
  • isfinite()

2、字符串的方法

  • toString()
  • String()

  • indexOf()
  • lastIndexOf()

  • substring()
  • substr()
  • slice()

  • charAt()
  • charCodeAt()

  • toLocaleUpperCase()
  • toLocaleLowerCase()

  • encodeURI()
  • decodeURI

3、内置构造函数 

(1)Date()

  • getFullYear()
  • getMonth()// 返回0~11
  • getDate()
  • getHour()
  • getMinutes()
  • getSeconds()
  • getDay()

(2)Math()

  • random()
  • floor()
  • ceil()
  • round()

4、对象

(1)方法

  • valueOf()
  • toString()
  • JSON.stringity()
  • JSON.parse()

(2)属性

  • get  和 set
  • .语法 和 [ ] 语法
  • in 
  • delete

5、数组

  • pop()
  • shift()
  • push()
  • unshift()

  • indexOf()
  • lastIndexOf()

  • concat()
  • slice()
  • splice()

  • split()
  • toString()
  • join()

  • reverse()
  • sort()

  • forEach()
  • every()
  • some()
  • map()
  • filter()

  • reduce()
  • Array.isArray()

6、函数方法

  • call()
  • apply()
  • bind()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值