JavaScript 高级-学习笔记

1.面向对象

面向过程:分析解决问题的需要的步骤,用函数依次实现,然后调用
面向对象:把事务分解为一个个对象,然后有对象之间分工合作

2. 面向对象

封装
继承
多态

3. 类和对象 class

//定义类
class Name {
	constructor(name) {
		this.name = name;
	}
	//定义方法,类里面的函数不要function
	say(){
		console.log('hello');
	}
}
//创建类
var ldh = new Name('刘德华');
ldh = new Name();

console.log(ldh);

4. 继承 extends

super关键字,必须在子类构造方法里this之前调用

注意点:
1先定义类,才能创建对象。
2类属性方法一定要加this
3类this指的是实例对象

6. 创建对象几种方式

var obj = {};//对象字面量
var obj = new Obj();  

function Person(name,age){
  this.name = name;
  this.age = age;
}
var obj = new Person('zs',12);

7. 实例成员 静态成员

实例成员:只能通过实例对象调用,通过this添加的属性
静态成员:通过类名赋值,类名调用访问
Star.sex = '男'

8. 构造函数的问题

构造函数里包含函数,如果创建多个实例对象,每个对象都会开启内存,浪费内存。

9. 构造函数原型prototype,构造函数问题的解决方法,用于共享方法。

function Star(uname, age) {
    this.uname = uname;
    this.age = age;
}	
Star.prototype.sing = function(){
	console.log('sing')
}

new Start('刘德华'18).sing();

10. 对象原型(proto)和构造函数(prototype)

(Star.prototype==ldh.__proto__)

// 如果我们修改原来的原型对象,给原型对象赋值的是个对象,则必须手动
//用  constructor 指向原来的构造函数
Star.prototype = {
	constructor:Star,
	sing:function(){},
	movie:function(){}
}

11. ???对象原型和构造函数的关系

?? 原型链
constructor ---> new Star()
ldh.__proto__ --> Star.prototype 

12. call 调用函数,修改this的指向

fn.call(obj,1,2) 默认指向fn,但是调用call后,指向了obj

13. ES5 新增方法

forEach

//数组元素,数组索引,当前数组
arr.forEach(function(value,index,arr){})

filter

//根据不同条件过滤数据
arr.filter(function(){})

arr.some(function(value,index,arr){
	
})

some

满足条件后,终止条件

foreach

foreach,遍历所有满足条件的数据

trim

去除首位空格

Object.keys

Object.keys(对象) 
获取对象里属性名数组
var ret = Oject.keys(obj);

Object.defineProperty()

设置新的属性

14.严格模式 es5后 IE10以上

消除js语法一些不合理,不严谨之处。
消除代码一些不安全
提高编译器效率

为脚本开启严格模式和为函数开启严格模式
‘use strict’

15 严格模式的变化

变量必须先声明
不能删除变量
全局作用域 this 是undefined 
构造函数不加new,this 会报错。
定时器this 还是window
函数里不允许重名参数

16 高阶函数

是对其他函数进行操作的函数,接收函数作为参数或者将函数作为返回值输出。

17 闭包 closure

有权访问另一个函数作用域的变量的函数

18 递归

19 正则表达式

20 ES6 新增方法

let

局部变量

const

常量

解构赋值:

把数据结构分解,然后给变量赋值
	let [a, b, c] = [1, 2, 3];
	 console.log(a)//1
	 console.log(b)//2
	 console.log(c)//3

箭头函数:

() => {} 
	//():代表是函数; =>:必须要的符号,指向哪一个代码块;{}:函数体
	var age = 100;
	
	var obj = {
		age: 20,
		say: () => {
			alert(this.age)
		}
	}
	//箭头函数this指向的是被声明的作用域里面,
	//而对象没有作用域的,所以箭头函数虽然在对象中被定义,但是this指向的是全局作用域
	obj.say();
Array

扩展运算符

let arr = [1,2,3];
console.log(...arr); //打印数组里所有元素

Array.from()
find()
findIndex() 查询下标
includes() 判断数组包含指定的值,返回boolean

String

let name ="lisi";
	let hell = 'this is ${name}';
Set 保证数据的唯一
	const s = new Set();
	//可以接受一个数组作为参数
	const set = new Set([1,2,3,4,4]);
	
	set.add(5);
	set.delete(4);
	set.has(3)
	set.clear() 清除所有
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值