当前位置:网站首页>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 .
边栏推荐
- CDZSC_ 2022 winter vacation personal training match level 21 (2)
- 20排位赛3
- CDZSC_2022寒假个人训练赛21级(2)
- Enterprise practice | construction of banking operation and maintenance index system under complex business relations
- Bit operation ==c language 2
- ORM--分组查询,聚合查询,查询集QuerySet对象特性
- Web3.0 series distributed storage IPFs
- EXT2 file system
- Software modeling and analysis
- Introduction to automated testing framework
猜你喜欢

ORM模型--数据记录的创建操作,查询操作

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

Pytest learning - dayone

Sqlplus garbled code problem, find the solution

基于智慧城市与储住分离数字家居模式垃圾处理方法

Switching value signal anti shake FB of PLC signal processing series

Win10 installation vs2015

Google Colab装载Google Drive(Google Colab中使用Google Drive)

农牧业未来发展蓝图--垂直农业+人造肉

喜马拉雅网页版每次暂停后弹窗推荐下载客户端解决办法
随机推荐
Future development blueprint of agriculture and animal husbandry -- vertical agriculture + artificial meat
运用tensorflow中的keras搭建卷积神经网络
How to become a senior digital IC Design Engineer (5-2) theory: ULP low power design technology (Part 1)
flink. CDC sqlserver. 可以再次写入sqlserver中么 有连接器的 dem
The Himalaya web version will pop up after each pause. It is recommended to download the client solution
中国首款电音音频类“山野电音”数藏发售来了!
能源路由器入门必读:面向能源互联网的架构和功能
Luogu p2482 [sdoi2010] zhuguosha
Check the example of where the initialization is when C initializes the program
ES6中的函数进阶学习
Write VBA in Excel, connect to Oracle and query the contents in the database
Database multi table Association query problem
2020浙江省赛
The new activity of "the arrival of twelve constellations and goddesses" was launched
conda离线创建虚拟环境
Pytest learning - dayone
CDZSC_2022寒假个人训练赛21级(1)
CodeForces - 1324D Pair of Topics(二分或双指针)
The landing practice of ByteDance kitex in SEMA e-commerce scene
视频化全链路智能上云?一文详解什么是阿里云视频云「智能媒体生产」