学习Javascript的闭包、原型和匿名函数

本文给出了Javascript的闭包、原型和匿名函数的示例,并查看下面的详细信息。

闭包之一。

理解闭包所需的知识



1的范围。变量

1例:




var = 99;函数之外的全局变量
读函数(){
警报(n);读取全局变量
}




(一); / /执行此功能

2例:


功能readb(){
var=9;
功能reADC(){
Console.log(C); / /好C可见
}
返回reADC;
}
警报(c);错误C未定义。


当注释:函数声明变量C时,必须添加var,否则C将变成一个全局变量。

因此,全局变量在函数中可见,函数中的局部变量对外部世界是不可见的。

js的范围是一个链,父对象中的变量总是对子对象可见,子对象的对象对父对象不可见。

当我们在函数中获取内部变量时

所以有一个例子3:


功能readb(){
var=9;
功能reADC(){
Console.log(C);
}
reADC()返回;
}
ReadB ();


闭包与基于此的变体非常相似。


功能readb(){
var=9;
功能reADC(){
Console.log(C);
}
返回reADC;
}
VaR既= readb();
(RES);


注:



1。仔细使用闭包,注意内存占用,因为它会保存父函数的状态。

2。不要更改父函数的内部变量的值。

理解闭包



注意:这是指包含它的函数被执行的对象。

1例:




窗口;

var对象{ { {
名称:我的对象

GetNameFunc:(功能)在这个({ / /执行功能)属于对象,是客体对象的属性的值,
此函数的返回(函数)是根对象窗口中的一个匿名函数,属于窗口。
返回this.name;
};
}
};
console.log(object.getnamefunc()()); / /窗口


2例:




窗口;

var对象{ { {
名称:我的对象

GetNameFunc:函数(){
var =;
返回函数(){
返回that.name;
};

}
};
console.log(object.getnamefunc()()); / /我的对象


两个匿名函数。

直接定义匿名函数,然后调用匿名函数,这在定义jQuery插件时是常见的。

1。以字母函数方式。声明一个匿名函数,然后执行它。


(函数(){())
console.log('excute自我);
});




2、通过优先级表达式,因为Javascript的执行表达式是从圆括号到外部的,圆括号可以用来强制声明函数。



函数(){
警报(2);
}
()
);


的3.void操作员使用的操作执行一个操作数是没有括号包围


函数(){ console.log('void ')}();


三关于原型。

原型样机

了解protitype JS首先需要了解JS的面向对象设计


函数人(名称){
this.name =名称;

console.log(本); / /窗口或对象名称:'xxx'} {
(this.introduce =功能){ / /对象的方法
console.log(这个名字);
}
}
新的人('leon)介绍();
这是一个非常有趣的现象,与前面的观点相结合,
第一个函数中的默认人/这指向窗口对象
当调用人员();这个窗口对象的输出
/ /但曾称新的人('xx),这个输出是{姓名:'xx}
也是很好的理解,一旦新建,就创建一个新对象


实例对象的方法只能是新的人('leon)。介绍();电话在使用前必须初始化

类对象的静态方法


var是一个对象或函数数组,人们现在需要的是一个引用类型。
people.sayhi =功能(to_who){
console.log(嗨+ to_who);
}
people.sayhi('lee '); / /打这个电话



原型法


var(人=函数){;人必须是函数(){ }是一个不是对象或值类型或引用类型的类。
people.prototype.meet =功能(meet_who){
console.log(我+ this.name +,以满足+ meet_who);
};
新的人('lee)满足('xx);


原型方法只能由这个类的对象调用。

a.prototype =新的B();

原型看起来像继承,但它不是,它更像克隆更准确。

如果父类和子类出现相同的属性,则采用邻近原则,如果找不到要查找的级别,如果指定调用的属性,则使用调用方法。


extendclass.prototype =新的基类();
var实例=新extendclass();
无功baseinstance =新的基类();
baseinstance.showmsg.call(实例);
obj1.func.call(obj);


上面是一个学习Javascript闭包、原型和匿名函数的小程序包,希望对大家有用。