当前位置:网站首页>Apprentissage avancé des fonctions en es6
Apprentissage avancé des fonctions en es6
2022-07-07 10:06:00 【Quand Xiaobai réussira - t - il?】
1、Définition de la fonction
//1.Fonction personnalisée(Fonctions nommées)
function fn(){
}
//2.Expression de la fonction(Fonction anonyme)
var fun = function(){
console.log("fun");
}
fun();
//3.Utilisationnew Function('Paramètres1','Paramètres2','Corps fonctionnel')
var f = new Function('a','b','console.log(a+b)');
f(1,2);
La fonction appartient également à l'objet.
2、Appel de fonction
//1.Fonction normale
function fn(){
console.log("this is a fun");
}
fn();//Ou adoptionfn.call();
//2.Méthode de l'objet
var o ={
sayHi :function(){
console.log("this is a object fun");
}
}
o.sayHi();
//3.Constructeur
function Star(){
console.log('constructor fun');
}
let ldh = new Star();
//4.BIND Event Function
btn.onclick = function(){
console.log('btn click fun')
};//Cette fonction peut être appelée en cliquant sur le bouton
//5.Fonction Timer
setInterval(function(){console.log('setInterval fun')},1000);
//6.Exécuter la fonction maintenant
(function(){
console.log('lijizhixing ');
})()
3、thisProblème de pointage
//1.Fonction normale-thisPointagewindow
function fn(){
console.log('1fn:'+this);
}
window.fn();
//2.Méthode de l'objet-thisPointageoCet objet
var o ={
sayHi :function(){
console.log(this);
}
}
o.sayHi();
//3.Constructeur-thisPointageldhCet objet d'instance
function Star(){
console.log(this);
}
let ldh = new Star();
//4.BIND Event Function-thisPointagebtnCe bouton
btn.onclick = function(){
console.log(this);
};
//5.Fonction Timer-thisPointagewindow
window.setTimeout(function(){console.log(this);},1000);
//6.Exécuter la fonction maintenant-thisPointagewindow
(function(){
console.log(this);
})()
Résumé:
Mode d'appel | thisPointage |
Fonction normale | window |
Constructeur | Objet instance( Les méthodes de l'objet prototype pointent également vers l'objet instance ) |
Méthode objet | Objet auquel appartient la méthode |
Liaison de l'événement | Lier l'objet de l'événement |
Minuterie | window |
Exécuter la fonction maintenant | window |
4、Modifier l'intérieur de la fonctionthisPointage
Les plus courants sont:call()、apply()、bind()Trois approches
1、callMéthodes
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);//callComment utiliser
//Principales applications-Succession
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、applyMéthodes
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]);//applyUtilisation de, Les paramètres suivants doivent être un tableau
// Principaux cas d'application -UtilisationMathMax
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、bindMéthodes(Utilisation maximale)
var o ={
name:'liming',
fun:function(){console.log('object');}
}
function fn(a,b)
{
console.log(this);
console.log(a+b);
}
//Méthode d'utilisation I
let newFn = fn.bind(o);//bindUtilisation de, Il n'appelle pas la fonction ,Renvoie la valeur spécifiée parthis Copie de la fonction originale de
newFn(2,3);
//Méthode d'utilisation II
let newFn2 = fn.bind(o,2,3);//bindUtilisation de, Il n'appelle pas la fonction ,Renvoie la valeur spécifiée parthis Copie de la fonction originale de
newFn2();
Cas d'application principal I
var o ={
name:'liming',
fun:function(){console.log('object');}
}
function fn(a,b)
{
console.log(this);
console.log(a+b);
}
//Utiliser
let newFn = fn.bind(o);//bindUtilisation de, Il n'appelle pas la fonction ,Renvoie la valeur spécifiée parthis Copie de la fonction originale de
newFn(2,3);
//Principales applications
btn.onclick = function(){
this.disabled = true;//Ici.thisPointer vers le bouton
setTimeout(function(){
this.disabled = false;//Ici.thisPointagewindow
}.bind(this),3000);//bindAprès la liaison,Au - dessusthis Changer en bouton
//Équivalent à
// let fun =function(){
// this.disabled = false;//Ici.thisPointagewindow
// }.bind(this);
// setTimeout(fun,3000);//bindAprès la liaison,Au - dessusthis Changer en bouton
}
Points de différenciation:
- callEtapplyLa fonction est appelée,Et changer l'intérieur de la fonctionthisPointage.
- callEtapplyLes paramètres passés sont différents,callParamètres de passagearg1,arg2...,applyDoit être sous forme de tableau[arg1,arg2...]
- bindLa fonction n'est pas appelée,Il est possible de modifier lethisPointage
Principaux scénarios d'application:
- callHériter souvent
- applySouvent associé à un tableau. Par exemple, en utilisant un objet mathématique pour atteindre la valeur maximale minimale d'un tableau
- bindNe pas appeler la fonction,Mais je veux aussi changerthisPointage. Par exemple, changer l'intérieur d'un minuteur thisPointage.
边栏推荐
- Thinkphp3.2 information disclosure
- 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
- 根据热门面试题分析Android事件分发机制(一)
- [original] what is the core of programmer team management?
- 位操作==c语言2
- 农牧业未来发展蓝图--垂直农业+人造肉
- Wallys/IPQ6010 (IPQ6018 FAMILY) EMBEDDED BOARD WITH ON-BOARD WIFI DUAL BAND DUAL CONCURRENT
- EXT2 file system
- C# Socke 服务器,客户端,UDP
- Applet popup half angle mask layer
猜你喜欢
“十二星座女神降临”全新活动推出
ORM--分组查询,聚合查询,查询集QuerySet对象特性
The applet realizes multi-level page switching back and forth, and supports sliding and clicking operations
基础篇:带你从头到尾玩转注解
Future development blueprint of agriculture and animal husbandry -- vertical agriculture + artificial meat
Basic chapter: take you through notes
How will fashion brands enter the meta universe?
AI moves from perception to intelligent cognition
企业实战|复杂业务关系下的银行业运维指标体系建设
Google Colab装载Google Drive(Google Colab中使用Google Drive)
随机推荐
Horizontal split of database
Pit encountered by vs2015 under win7 (successful)
web3.0系列之分布式存储IPFS
flink. CDC sqlserver. You can write the DEM without connector in sqlserver again
Hcip first day notes sorting
Performance optimization record of the company's product "yunzhujia"
2020 Zhejiang Provincial Games
Flex flexible layout
In addition to the objective reasons for overtime, what else is worth thinking about?
The Himalaya web version will pop up after each pause. It is recommended to download the client solution
虚数j的物理意义
基于智慧城市与储住分离数字家居模式垃圾处理方法
Bean 作⽤域和⽣命周期
How to become a senior digital IC Design Engineer (5-2) theory: ULP low power design technology (Part 1)
Flinkcdc failed to collect Oracle in the snapshot stage. How do you adjust this?
Gym - 102219J Kitchen Plates(暴力或拓扑序列)
根据热门面试题分析Android事件分发机制(一)
The industrial chain of consumer Internet is actually very short. It only undertakes the role of docking and matchmaking between upstream and downstream platforms
Internship log - day04
Basic use of JMeter to proficiency (I) creation and testing of the first task thread from installation