[JAVASCRIPT] 进阶知识巩固

这篇博客涵盖了JavaScript的进阶内容,包括数据类型、变量内存、对象、回调函数、IIFE、函数中的this、判断技巧、ES6的let/const区别、原型与原型链、变量提升、执行上下文、作用域链、闭包以及面向对象和线程事件机制。通过学习,读者将深入理解JavaScript的高级概念。
摘要由CSDN通过智能技术生成

学习视频链接:

一,基础总结:

1,数据类型

1.1. 基本类型:

  • String
  • Number
  • Boolean
  • undefined
  • Null

1.2.对象类型:

2,变量类型: 【变量内存之的类型】

2.1.基本类型:
保存的就是基本类型的数据

2.2.引用类型:保存的引用地址

  • Object:任意对象都是Object
  • Function
  • Array

3, 数据-变量-内存

4,对象

5,回调函数

回调函数的特点:

  • 自己定义的
  • 自己没有去主动调用
  • 最终函数执行了

常见的回调函数:

  • DOM事件回调函数【点击事件,悬浮事件等】
  • 定时器回调函数
  • ajax请求回调函数
  • 生命周期回调函数

6,IIFE:立即执行函数–匿名函数自调用

相当于闭包吧个人理解。不会污染全局命名空间。

7,函数中的this ?

如何确定this指向的是谁?

  • test():this指向window
  • p.test():this指向P
  • new test() :this指向新创建的实例对象
  • p.cal(obj):this指向obj

8,判断

对数据进行判断时,“typeof”, “instanceof " ,” ==="

  • typeof:可以判断undefined/number/string/boolean/function。不能判断 null & Object , Object & Array
  • instanceof :判断对象的具体类型
  • " === "可以用来判断null和undefined
console.log(typeof '123');//String

typeof undefined  // undefined 值为undefined ,类型为undefined 
typeof null      // object  值为null,类型为对象

null === undefined           // false  全等要求值和类型都相等,它们类型不同
null == undefined            // true

console.log('111' instanceof String);//true

9,undefined和null的区别:

  • undefined表示变量声明过但并未赋值。会自动默认赋值undefined。 比如 let x;
  • null表示数据定义并赋值了只是value为null。null主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。
  • 什么时候需要给变量赋值为null? 初始时和结束时。
    当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。
let a = null;//初始赋值为null,表明将要将a赋值为对象
a = [],
a = null;//结束时赋值为null,让a指向的对象成为垃圾对象,可以被垃圾回收器回收

10,ES6语法规范,let/const的区别

二,函数高级

1,原型和原型链

1.6 关于原型的面试题检测:

面试题1:涉及知识点—原型,变量赋值,内存

function A() {}

A.prototype.n = 1;

var b = new A();//b对象的隐式原型  b.__proto__ === A.prototype  所以通过隐式原型查找到b.n的值为1

A.prototype = { //将{}赋值给显示原型变量。数组/对象/函数的赋值会重新分配新的内存空间,存储新的内存地址。
	n:2,
	m:3
}

var c = new A();
console.log(b.n,b.m,c.n,c.m);//1 undefined 2 3 

图解:
在这里插入图片描述

面试题2:
知识点:所有函数的显示原型都默认指向空的Object对象。所有函数都是Function实例,包括它本身。对象的隐式原型恒等于函数的显示原型。

function F() {};
Object.prototype.a = function() {
	console.log('a');
}
Function.prototype.b = function() {
	console.log('b');
}
var f = new F();//f.__proto__的值等于F.prototype,F.prototype的值等于空的Object对象。【所有函数的显示原型都默认指向空的Object实例对象,实例对象最终可以看到显示原型上的值。
f.a();
f.b();
F.a();
F.b();

图解:
在这里插入图片描述

以上图解纠正:f.b()不是undefined。而是无法执行,会报错,因为找不到函数b()。其他三个都会执行相应函数。

2,变量提升与函数提升

在这里插入图片描述

3,执行上下文和执行上下文栈

4,作用域和作用域链

闭包

三,面向对象高级

四,线程机制与事件机制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值