es6类,判断数据类型

es6的类

今日目标:

1.判断数据类型的方法

2.es6的类

3.es6类实现轮播图

00-回顾

javascript 复制代码
# 原型

`作用`:共享属性和方法

`特性`:
	1. 每一个函数,这里特指构造函数,都会有一个`prototype`,这个就是原型对象,也叫显式原型。挂载到原型对象上的属性和方法可以被共享
	2. 每一个实例对象都有一个`__proto__`, 现代浏览器写作`[[prototype]]`,这个就是隐式原型。它会指向构造函数的原型对象。实际开发中,不会用到隐式原型,它只起到指向的作用
	3. 每一个构造函数的原型对象都会有一个`constructor`,这个是构造器,它会指回构造函数本身
    
    
# 原型链

`作用`:规定了属性和方法的查找规则。
	=> 先在构造函数身上查找,找到就使用,并终止查找;没有找到就在构造函数的原型对象上继续查找,如果没有找到,就继续在Object的原型对象上查找,如果还是没找到,就报错

`特性`:
	1. 构造函数的原型对象也是一个对象,它也会有`__proto__`这个隐式原型,它会指向Object的原型对象
    2. Object的原型对象又是一个对象,它也会有`__proto__`这个隐式原型,它会指向null
    3. Object的原型对象也会有一个`constructor`构造器,它会指回Object构造函数本身
    
# swiper轮播图插件的使用

01-判断数据类型的方法

javascript 复制代码
# typeof: 只能用来判断基本数据类型
typeof '123' 'string'
typeof 123 'number'
typeof null 'object'
typeof [1,2,3] 'object'
typeof {uname: '小妲己'} 'object'
typeof function() {} 'function'

# constructor构造器
// 原理:实例对象本身是没有constructor属性的,但是可以根据原型链关系,实例对象可以使用构造函数的原型对象上的constructor构造器
// 不能判断undefined和null

[1,2,3].construtor // Array
{}.constructor // Obejct
'小妲己'.construtor // String

# instanceof:判断是否是构造函数的实例对象

// 不能判断基本数据类型
// 数组,函数,对象都是Object的实例对象,判断时,请把对象的判断放到最后
[1,2,3] instanceof Array // true

if (arr1 instanceof Array) {
    console.log('数组');
} else if (arr1 instanceof Function) {
    console.log('函数');
} else {
    console.log('对象');
}

得到:::[1,2,3] instanceof Array ? [] : {}
 另外一种检测数据类型的方法:更加精准
//[].__proto__.constructor == Array //true
//{}.__proto__.constructor == Object //true


# Object.prototype.toString.call()
// 最完美的判断方法,可以判断所有数据类型
Object.prototype.toString.call([1,2,3]) // '[object Array]'
Object.prototype.toString.call({}) // '[object Object]'
Object.prototype.toString.call('小妲己') // '[object String]'
Object.prototype.toString.call(undefined) // '[object Undefined]'

// 函数封装
function getType(data) {
    return Object.prototype.toString.call(data)
}

02-es6的类

javascript 复制代码
`类`: 批量创建具有相同属性和方法的实例对象

`语法`:
class Person {
    // constructor: 构造器函数,绑定属性
    // 静态属性
    属性 = 值
    constructor(形参) {
        this.属性 = 值
    }
	// 原型方法
	方法名() {}
	// 静态方法: 类独有的方法,不可以被实例对象使用
	static 方法名() {}
}

`调用`: let p1 = new Person(实参)
相关推荐
东风破_4 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_4 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric5 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_015 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余5 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei6 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神6 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
小磊哥er7 小时前
深入解构Claude Code - 第 8 篇 · 数据放哪、钱怎么算
javascript·ai编程
kyriewen8 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程
风骏时光牛马9 小时前
大模型落地实践中的技术选型思路与方案对比
前端