当前位置:网站首页>Advanced function learning in ES6
Advanced function learning in ES6
2022-07-07 10:06:00 【When can Xiaobai advance to success】
1、 Function definition
//1. Custom function ( Name the function )
function fn(){
}
//2. Function expression ( Anonymous functions )
var fun = function(){
console.log("fun");
}
fun();
//3. utilize new Function(' Parameters 1',' Parameters 2',' The body of the function ')
var f = new Function('a','b','console.log(a+b)');
f(1,2);Functions also belong to objects .
2、 Function call
//1. Ordinary function
function fn(){
console.log("this is a fun");
}
fn();// Or adopt fn.call();
//2. Object method
var o ={
sayHi :function(){
console.log("this is a object fun");
}
}
o.sayHi();
//3. Constructors
function Star(){
console.log('constructor fun');
}
let ldh = new Star();
//4. Binding event functions
btn.onclick = function(){
console.log('btn click fun')
};// Click the button to call this function
//5. Timer Functions
setInterval(function(){console.log('setInterval fun')},1000);
//6. Immediate execution function
(function(){
console.log('lijizhixing ');
})()3、this Direction problem of
//1. Ordinary function -this Point to window
function fn(){
console.log('1fn:'+this);
}
window.fn();
//2. Object method -this Point to o This object
var o ={
sayHi :function(){
console.log(this);
}
}
o.sayHi();
//3. Constructors -this Point to ldh This instance object
function Star(){
console.log(this);
}
let ldh = new Star();
//4. Binding event functions -this Point to btn This button
btn.onclick = function(){
console.log(this);
};
//5. Timer Functions -this Point to window
window.setTimeout(function(){console.log(this);},1000);
//6. Immediate execution function -this Point to window
(function(){
console.log(this);
})()summary :
| Call mode | this Point to |
| Ordinary function | window |
| Constructors | Instance object ( The methods in the prototype object also point to the instance object ) |
| Object methods | The object of this method |
| Event binding | Bind event object |
| Timer | window |
| Immediate execution function | window |
4、 Change function interior this Point to
Commonly used call()、apply()、bind() Three methods
1、call Method
var o ={
name:'liming',
fun:function(){console.log('object');}
}
function fn(a,b)
{
console.log(this);
console.log(a+b);
}
fn.call(o,1,2);//call How to use
// Main application - Inherit
function Father(uname,age)
{
this.uname = uname;
this.age = age;
}
function Son(uname,age)
{
Father.call(this,uname,age);
console.log('this name:'+this.uname);
}
let son1 = new Son('liming',18);
2、apply Method
var o ={
name:'liming',
fun:function(){console.log('object');}
}
function fn(a,b)
{
console.log(this);
console.log(a+b);
}
fn.apply(o,[2,3]);//apply Usage of , The following parameters must be arrays
// Main application cases - utilize Math For maximum
var arr =[1,3,5,66,23,123];
let maxNum = Math.max.apply(Math,arr);
let minNum = Math.min.apply(Math,arr);
console.log("maxNum:"+maxNum+',minNum:'+minNum);3、bind Method ( Most used )
var o ={
name:'liming',
fun:function(){console.log('object');}
}
function fn(a,b)
{
console.log(this);
console.log(a+b);
}
// Use method 1
let newFn = fn.bind(o);//bind Usage of , He doesn't call functions , Returns the specified this Copy of the original function of
newFn(2,3);
// Use method 2
let newFn2 = fn.bind(o,2,3);//bind Usage of , He doesn't call functions , Returns the specified this Copy of the original function of
newFn2();Main application case 1
var o ={
name:'liming',
fun:function(){console.log('object');}
}
function fn(a,b)
{
console.log(this);
console.log(a+b);
}
// Use
let newFn = fn.bind(o);//bind Usage of , He doesn't call functions , Returns the specified this Copy of the original function of
newFn(2,3);
// Main application
btn.onclick = function(){
this.disabled = true;// there this Pointing button
setTimeout(function(){
this.disabled = false;// there this Point to window
}.bind(this),3000);//bind After binding , above this Change to button
// Equivalent to
// let fun =function(){
// this.disabled = false;// there this Point to window
// }.bind(this);
// setTimeout(fun,3000);//bind After binding , above this Change to button
}Difference point :
- call and apply Will call functions , And change the inside of the function this Point to .
- call and apply The parameters passed are different ,call Pass parameters arg1,arg2...,apply Must be in array form [arg1,arg2...]
- bind Does not call function , You can change the internal of a function this Point to
Main application scenarios :
- call Often do inheritance
- apply Often associated with arrays . For example, with the help of mathematical objects to achieve the maximum and minimum values of arrays
- bind Don't call functions , But also want to change this Point to . For example, change the timer's internal this Point to .
边栏推荐
- 能源路由器入门必读:面向能源互联网的架构和功能
- The Himalaya web version will pop up after each pause. It is recommended to download the client solution
- Deep understanding of UDP, TCP
- ORM--查询类型,关联查询
- CDZSC_2022寒假个人训练赛21级(1)
- Future development blueprint of agriculture and animal husbandry -- vertical agriculture + artificial meat
- 反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释
- 【ORM框架】
- Three years after graduation
- 2016 CCPC Hangzhou Onsite
猜你喜欢

中国首款电音音频类“山野电音”数藏发售来了!

Enterprise practice | construction of banking operation and maintenance index system under complex business relations

Agile course training

request对象对请求体,请求头参数的解析
![[original] what is the core of programmer team management?](/img/11/d4b9929e8aadcaee019f656cb3b9fb.png)
[original] what is the core of programmer team management?

The applet realizes multi-level page switching back and forth, and supports sliding and clicking operations

Internship log - day07

First issue of JS reverse tutorial

Use 3 in data modeling σ Eliminate outliers for data cleaning

字节跳动 Kitex 在森马电商场景的落地实践
随机推荐
“十二星座女神降临”全新活动推出
ES6中的函数进阶学习
官媒关注!国内数字藏品平台百强榜发布,行业加速合规健康发展
CodeForces - 1324D Pair of Topics(二分或双指针)
Performance optimization record of the company's product "yunzhujia"
2020ccpc Weihai J - Steins; Game (SG function, linear basis)
Parameter sniffing (2/2)
Huffman encoded compressed file
Gauss elimination
虚数j的物理意义
Write VBA in Excel, connect to Oracle and query the contents in the database
Applet sliding, clicking and switching simple UI
Gym - 102219J Kitchen Plates(暴力或拓扑序列)
Natapp intranet penetration
[untitled]
Deep understanding of UDP, TCP
Guys, have you ever encountered the case of losing data when Flink CDC reads mysqlbinlog? Every time the task restarts, there is a probability of losing data
Detailed explanation of diffusion model
First issue of JS reverse tutorial
位操作==c语言2