当前位置:网站首页>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 .
边栏推荐
- There is a problem using Chinese characters in SQL. Who has encountered it? Such as value & lt; & gt;` None`
- Scratch crawler mysql, Django, etc
- 一大波开源小抄来袭
- Deadlock caused by non clustered index in SQL Server
- 2016 CCPC Hangzhou Onsite
- Agile course training
- web3.0系列之分布式存储IPFS
- How to use Mongo shake to realize bidirectional synchronization of mongodb in shake database?
- 为什么安装mysql时starting service报错?(操作系统-windows)
- Before joining the chain home, I made a competitive product analysis for myself
猜你喜欢

Arthas simple instructions

基础篇:带你从头到尾玩转注解

小程序弹出半角遮罩层

官媒关注!国内数字藏品平台百强榜发布,行业加速合规健康发展

Pytest learning - dayone

使用BigDecimal的坑

Detailed explanation of diffusion model

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

Garbage disposal method based on the separation of smart city and storage and living digital home mode

Elaborate on MySQL mvcc multi version control
随机推荐
Gauss elimination
字节跳动 Kitex 在森马电商场景的落地实践
Delete a record in the table in pl/sql by mistake, and the recovery method
AI moves from perception to intelligent cognition
高斯消元
有没有大佬帮忙看看这个报错,有啥排查思路,oracle cdc 2.2.1 flink 1.14.4
为什么安装mysql时starting service报错?(操作系统-windows)
Parameter sniffing (1/2)
China's first electronic audio category "Yamano electronic audio" digital collection is on sale!
中国首款电音音频类“山野电音”数藏发售来了!
Or in SQL, what scenarios will lead to full table scanning
Arcgis操作: 批量修改属性表
大佬们,请问 MySQL-CDC 有什么办法将 upsert 消息转换为 append only 消
CDZSC_ 2022 winter vacation personal training match level 21 (1)
Bean 作⽤域和⽣命周期
Before joining the chain home, I made a competitive product analysis for myself
Use 3 in data modeling σ Eliminate outliers for data cleaning
大佬们,有没有遇到过flink cdc读MySQLbinlog丢数据的情况,每次任务重启就有概率丢数
Arthas simple instructions
2020 Zhejiang Provincial Games