194 lines
3.5 KiB
Markdown
194 lines
3.5 KiB
Markdown
|
---
|
|||
|
title: SE6
|
|||
|
date: 2024-09-19T10:31:39Z
|
|||
|
tags: []
|
|||
|
---
|
|||
|
|
|||
|
### object
|
|||
|
|
|||
|
#### closure
|
|||
|
|
|||
|
closure=inner function+external function variable
|
|||
|
|
|||
|
```javascript
|
|||
|
function f1() {
|
|||
|
let i=0
|
|||
|
function f2() {
|
|||
|
i++
|
|||
|
console.log(i)
|
|||
|
}
|
|||
|
return f2
|
|||
|
}
|
|||
|
const f=f1()
|
|||
|
```
|
|||
|
|
|||
|
#### construct object
|
|||
|
|
|||
|
```javascript
|
|||
|
function Pig(name,age,gender){
|
|||
|
this.name = name
|
|||
|
this.age = age
|
|||
|
this.gender = gender
|
|||
|
}
|
|||
|
const pappe = new Pig('佩奇',6,'女')
|
|||
|
```
|
|||
|
|
|||
|
Instance members: methods and properties on property objects
|
|||
|
|
|||
|
Static members: static properties and methods
|
|||
|
|
|||
|
##### convention
|
|||
|
|
|||
|
1. can only start with a capital letter
|
|||
|
2. can only be executed using the 'new' operator
|
|||
|
|
|||
|
##### prototype
|
|||
|
|
|||
|
```javascript
|
|||
|
function Pig(name,age){
|
|||
|
this.name = name
|
|||
|
this.age = age
|
|||
|
}
|
|||
|
Pig.prototype.sing=function(){}
|
|||
|
const pappe = new Pig('佩奇',6)
|
|||
|
```
|
|||
|
|
|||
|
1. each cpmstructor has a prototype property
|
|||
|
2. This object mounting function will not create functions on the prototype multiple times during object instantiation, saving memory
|
|||
|
|
|||
|
##### constructor
|
|||
|
|
|||
|
1. Refers back to the constructor created
|
|||
|
|
|||
|
##### object prototype
|
|||
|
|
|||
|
`__proto__` =`[[proto]]`
|
|||
|
|
|||
|
##### inherit
|
|||
|
|
|||
|
```javascript
|
|||
|
function Person(){
|
|||
|
this.gender=1
|
|||
|
}
|
|||
|
function A(uname,age){
|
|||
|
this.uname = uname;
|
|||
|
this.age = age;
|
|||
|
}
|
|||
|
A.prototype=new Person()
|
|||
|
A.prototype.constructor=A
|
|||
|
```
|
|||
|
|
|||
|
##### Prototype Chain
|
|||
|
|
|||
|
Inheritance based on prototype objects associates different constructor objects together
|
|||
|
|
|||
|
##### instanceof
|
|||
|
|
|||
|
You can use `instanceof` to check if the prototype property of the constructor appears on the prototype chain of an instance object
|
|||
|
|
|||
|
### function
|
|||
|
|
|||
|
#### parmeter
|
|||
|
|
|||
|
* dynamics parmeter
|
|||
|
|
|||
|
```javascript
|
|||
|
arguments
|
|||
|
```
|
|||
|
|
|||
|
> The paseudo array includes all the parameters passed in
|
|||
|
>
|
|||
|
* remaining parameters
|
|||
|
|
|||
|
```javascript
|
|||
|
function f(...<parameter name>){
|
|||
|
<parameter name> //array
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
#### Arrow function
|
|||
|
|
|||
|
```javascript
|
|||
|
const <function name> = () =>{}
|
|||
|
```
|
|||
|
|
|||
|
##### rule
|
|||
|
|
|||
|
1. If the function has only one line, it can be written on one line, {} can be omitted, and there is no need to write a return to have a return value. If the return dictionary needs to be written, () needs to be added
|
|||
|
2. if there is only parameter,()can beomitted
|
|||
|
|
|||
|
##### this
|
|||
|
|
|||
|
the arrow function does not have this,it wil only use this from the higer-level scope chain
|
|||
|
|
|||
|
#### deconstruction
|
|||
|
|
|||
|
```javascript
|
|||
|
{name:newname,age:newage}={name:lsy;age:19}
|
|||
|
```
|
|||
|
|
|||
|
1. The variable names for deconstruction need to be consistent with those in the object
|
|||
|
2. Rename: The previous name is the opposite name, followed by the new name that needs to be changed. If not changed, do not use write
|
|||
|
|
|||
|
##### multistage
|
|||
|
|
|||
|
```javascript
|
|||
|
obj={
|
|||
|
a:1
|
|||
|
b:{
|
|||
|
b1:2
|
|||
|
b2:3
|
|||
|
}
|
|||
|
c:4
|
|||
|
}
|
|||
|
{a,b:{b1,b2},c}=obj
|
|||
|
```
|
|||
|
|
|||
|
### array
|
|||
|
|
|||
|
#### Expand operator
|
|||
|
|
|||
|
```javascript
|
|||
|
...<array>
|
|||
|
```
|
|||
|
|
|||
|
#### deconstruction array
|
|||
|
|
|||
|
```javascript
|
|||
|
[a,b]=[1,2]
|
|||
|
```
|
|||
|
|
|||
|
1. Assign the variables on the left to the variables on the right in sequence
|
|||
|
2. Support multidimensional arrays
|
|||
|
|
|||
|
### copy
|
|||
|
|
|||
|
#### shallow copy
|
|||
|
|
|||
|
If it is a complex data type, only copy the address
|
|||
|
|
|||
|
1. object
|
|||
|
|
|||
|
```javascript
|
|||
|
Object.assign(<new>,<old>)
|
|||
|
```
|
|||
|
|
|||
|
2. array
|
|||
|
|
|||
|
```javascript
|
|||
|
Array.prototype.concat()
|
|||
|
```
|
|||
|
|
|||
|
#### deep copy
|
|||
|
|
|||
|
1. recursion
|
|||
|
2. json
|
|||
|
3. Library functions
|
|||
|
|
|||
|
### performance optimization
|
|||
|
|
|||
|
||explain|
|
|||
|
| ----------| --------------------------------------------------------------------------------|
|
|||
|
|debounce|Frequent triggering of events within a unit time, only executing the last time|
|
|||
|
|throttle|Frequent triggering of events per unit time, only executed once|
|