JS进阶 学习笔记 day24 2021-5-11
this指向问题
function fn() {
console.log('人生的巅峰')
}
fn()
fn.call()
var o = {
sayhi:function () {
console.log('人生的巅峰')
}
}
o.sayhi()
function Star() {
Star.prototype.sing = function () {
}
}
var ldh = new Star()
btn.onclick = function () {
}
setInterval(function () {
},1000)
(function () {
console.log('人生的巅峰')
})()
call方法
var o = {
name:'andy'
}
function fn(a,b) {
console.log(this)
console.log(a+b)
}
fn.call(o,1,2)
function Father(uname,age,sex) {
this.uname = uname
this.age = age
this.sex =sex
}
function Son(uname,age,sex) {
Father.call(this,uname,age,sex)
}
var son = new Son('刘德华',18,'male')
console.log(son)
apply方法
var o = {
name: 'andy'
}
function fn(arr) {
console.log(this)
console.log(arr)
}
fn.apply(o,['pink'])
var arr = [1,66,3,99,4]
console.log(Math.max.apply(Math, arr));
console.log(Math.min.apply(Math, arr));
bind方法
JS进阶 学习笔记 day25 2021-5-12
3.5.用户名验证
var reg = /^[a-zA-Z0-9_-]{6,16}$/
console.log(reg.test('a'))
console.log(reg.test('8'))
console.log(reg.test('18'))
console.log(reg.test('aa'))
console.log('------')
console.log(reg.test('aaaaaaa'))
console.log(reg.test('andy-red'))
3.6 预定义类
\d 匹配0-9之前的任意数字,相当于[0-9]
\D 匹配所有0-9之外的字符,相当于[^0-9]
\w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_-]
\W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_-]
\s 匹配空格(包括换行符、制表符、空格符等),相等于[\t\r\n\v\f]
\S 匹配非空格的字符,相当于[^\t\r\n\v\f]
4.2正则表达式参数
switch(也称为修饰带)按照什么样的模式来匹配 有三种值:
- g:全局匹配
- i:忽略大小写
- gi:全局匹配+忽略大小写
ES6
let
ES6中新增的用于声明变量的关键字
注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特性
var
变量i是全局的,函数执行是输出的都是全局作用域下的i值
let
每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是子级上一级(循环产生的块级作用域)作用域下的i值
const
作用:声明常量,常量就是值(内存地址)不能变化的量
解构赋值
let ary = [1,2,3]
let [a,b,c] = ary
console.log(a)
console.log(b)
console.log(c)
let person = {name: 'lisi', age: '30', sex: 'male'}
let {name, age, sex} = person
console.log(name)
console.log(age)
console.log(sex)
let {name: uname, age: uage, sex: usex} = person
console.log(uname)
console.log(uage)
console.log(usex)
箭头函数
const fn = () => {
console.log(123)
}
fn()
const sum = (n1, n2) => n1 + n2
const result = sum(10, 20)
console.log(result)
const fn = v => {
alert(v)
}
fn(20)
function fn() {
console.log(this)
return () => {
console.log(this)
}
}
const obj = {name: 'zhangsan'}
const resFn = fn.call(obj)
resFn()
剩余参数
剩余参数语法允许我们将一个不定数量的参数表示为一个数组
Array 扩展方法
扩展运算符(展开语法)
扩展运算符可以将数组或者对象转为用逗号分隔的参数序列
-
扩展运算符可以应用于合并数组 -
将类数组或可遍历对象转换为真正的数组
实例方法:findIndex()
用于找出第一个复合条件的数组成员的位置,如果没有找到返回-1
实例方法:includes()
模板字符串:
模板字符串中可以解析变量
模板字符串可以换行
startsWith 和 endsWith
let str = 'hello emcascript 2015'
let r1 = str.startsWith('hello')
console.log(r1)
let r2 = str.endsWith(2015)
console.log(r2)
repeat()
repeat方法表示将原字符串重复n次,返回一个新字符串
console.log('y'.repeat(5))
Set 数据结构
ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值
Set数据结构
实例对象
- add(value):添加某个值,返回Set结构本身
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功
- has(value):返回一个布尔值,表示该值是否为Set的成员
- clear():清除所有成员,没有返回值
Node
Node是一个基于Chrome V8引擎的JavaScript代码运行环境
1.1 JavaScript开发弊端
JavaScript在使用时存在两大问题,文件依赖和命名冲突
1.4 Node.js中模块化开发规范
- Node规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认在外部无法得到
- 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块
const greeting = name => {
return `hello ${name}`
}
const x = 100
exports.x = x
module.exports.greeting = greeting
module.exports = {
name: 'zhangsan'
}
exports = {
age: 20
}
const a = require('./04-module.exports')
console.log(a.greeting('张三'))
|