闭包

//闭包
function createComparisonFunction(propertyName){
var tes = 4 ;
return function(object1,object2){
var value1 = object1[propertyName];
var value2 = object2[propertyName];
//alert(value1)
if(value1 < value2){
alert('1')
}else if(value1 < value2){
alert('2')

        }else{
            alert('3');
            return tes;
            
        }
    }
}
var compareNames = createComparisonFunction("name");
var result = compareNames({name:"nick"},{name:"cook"});
//compareNames = null;
console.log(result)

//闭包与变量 javascript高级程序设计第181

/*function test(){
var result = new Array();
for(var i = 0; i<10; i++){
result[i] = function(){
return i;
}

}
return result;

}
//alert(test() instanceof Array); //true
alert(test()2); //10 2替换为0·~9,值都为10*/

/*function test(){
var result = new Array();
for(var i = 0; i<10; i++){
result[i] = function(num){
return function(){
return num;
}
}(i)

}
return result;

}
//alert(test() instanceof Array); //true
alert(test()2); //2 2替换为i,值为i*/

/*

闭包中的this

闭包下的this对象

var name = "the window";
var object = {
name:"gejin",
getNamefunction:function(){ //匿名函数1
alert(this.name) //gejin
return function(){ //匿名函数2
alert(this.name) //the window 原因:object.getNamefunction()();调用匿名函数2时,2函数会自动取得this和arguments两个特殊变量,
//2内部函数在搜索这两个变量时,只会搜索到其活动对象(我的理解是包括函数内部的变量和arguments),不能直接访问外部函数1的this和arguments
//所以这里的this是window
return this.name;
}
}
}
object.getNamefunction()();*/

/var name = "the window";
var object = {
name:"gejin",
getNamefunction:function(){ //匿名函数1
alert(this.name) //gejin
var that = this;
return function(){ //匿名函数2
alert(that.name); //gejin
return that.name;
}
}
}
object.getNamefunction()();
/

var name = "the window";
var object = {
name:"gejin",
getName:function(){
return this.name;
}
}
alert(object.getName()); //gejin
(object.getName)(); //gejin
(object.getName = object.getName)(); //the window 这是一个赋值语句,赋值语句的返回值是等号右边的值,即(object.getName = object.getName)的返回值是object.getName
//所以(object.getName = object.getName)的返回值就是object.getName指向的函数本身了,即function(){return this.name;}
//所以(object.getName = object.getName)();等于function(){return this.name;}(),此段代码的调用者为 window, 所以 this 指向 window。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包function createComparison(propertyName){return function...
    Miss____Du阅读 3,848评论 3 6
  • 一、执行环境 所有变量(包括基本类型和引用类型)都存在一个执行环境(作用域)当中,这个执行环境决定了变量的生命周期...
    张延伟阅读 3,222评论 1 1
  • 大家好,我是IT修真院的学员,一枚正直纯洁善良的web前端程序员。 今天给大家带来的是闭包是什么,用处如何? 1....
    情的信仰阅读 4,569评论 0 0
  • 大家好,我是IT修真院成都分院第6期的学员,一枚正直纯洁善良的前端程序员。今天给大家带来的是闭包是什么,用处如何?...
    lx2487阅读 2,895评论 0 1
  • 我是一只小小的蜗牛 默默的追逐着时间的脚步 我没有雄鹰的翅膀 也没有大鱼的尾鳍 只能一点点不断的向前挪动 我心中一...
    瑾晞阅读 2,953评论 0 4