美文网首页
2019-03-20闭包的理解和应用

2019-03-20闭包的理解和应用

作者: 泡沫双鱼座 | 来源:发表于2019-03-20 15:48 被阅读0次

闭包:指一个函数允许访问另一个函数中的成员,广义来说,闭包可以访问声明它的作用域中的所有成员。

1.构造函数的私有属性和特权方法

//构造函数

var Stu1 = function(name){

    this.name = name;

    this.getName = function () {

        return this.name;

    };

}

var stu1 = new Stu1('Ann');

console.log(stu1.name);//Ann

console.log(stu1.getName());//Ann

------------------------------------------------------------------

var Stu2 = function(username){

    //私有成员,用'var'

    var name = username;

    //函数内部可以访问私有属性,形成了一个闭包

    //这个方法还有一个名称:特权方法

    this.getName = function () {

        return name;

    };

}

var stu2 = new Stu2('Peter');

//外部不能直接访问到函数变量

console.log(stu2.name);//undefined

//构造函数中的闭包,提供了私有成员的访问接口

console.log(stu2.getName());//Peter

2.对象字面量的私有属性和特权方法

//创建一个对象,创建在全局

var obj2 = null;//null就是对象,比{}好

//创建自执行函数

(function(){

    //私有成员

    var name = "Peter";

    //公共方法:给全局对象变量obj2赋值

    obj2 = {

        //特权方法

        getName:function() return name; }

    }

}());

// 外部对象只能通过访问这个特权方法来访问私有属性

console.log(obj2.getName())

//换一种语法风格

var obj3 = (function (){

    // 私有成员

    var name = 'dsj';

    // 公共方法, 给全局变量obj3赋值

    return  {

        //特权方法

        getName: function () { return name; }

    };

}());

//外部对象只能通过访问这个特权方法来访问私有属性

var res2 = obj3.getName();

3.私有静态成员

//创建特权方法,访问私有静态成员/

var Demo1 = (function(){

    //私有静态成员: 可以将前一次的调用结果保存,并被下一次调用引用

    var counter = 0;

    //新构建函数

       var NewDemo1 = function(){

        counter += 1;

    };

    //特权方法;在这个新构建函数的原型上创建

    NewDemo1.prototype.getCounter = function(){

        return counter;

    };

    return NewDemo1;

}());

var newObj1 = new Demo1();

console.log(newObj1.getCounter());

var newObj2 = new Demo1();

console.log(newObj2.getCounter())

分享来自https://www.html.cn/js/javascript/

相关文章

  • 2019-03-20闭包的理解和应用

    闭包:指一个函数允许访问另一个函数中的成员,广义来说,闭包可以访问声明它的作用域中的所有成员。 1.构造函数的私有...

  • JavaScript - 闭包

    理解 关于闭包 答案: 用arguments.callee和闭包实现的函数封装 应用 利用闭包实现自动递增计数

  • 如何理解和应用闭包

    何为闭包 函数内部又定义了一个函数,这个子函数就可以称为闭包。 闭包的特点 闭包的一个特点就是闭包内部可以引用外部...

  • 闭包(closure)

    ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...

  • JavaScript闭包

    闭包(closure)是 Javascript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。理解闭...

  • js闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 要理解闭...

  • JS闭包理解应用

    闭包: 简单来说: 闭包就是函数中的函数,就是说一个函数要访问另外一个目标函数内部的变量,就要在目标函数中再定义一...

  • JavaScript 闭包

    闭包(closure)的理解 是 JavaScript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现...

  • 浅谈闭包

    闭包是函数式语言里面很重要的部分,但是网上很多文章却只讲闭包的应用,而鲜有谈及其本质。 理解闭包的关键在于,知道它...

  • 「JS」闭包

    闭包闭包的应用保存变量现场封装 闭包 闭包有函数和与其相关的引用环境的组合而成 闭包允许函数访问其引用环境中的变量...

网友评论

      本文标题:2019-03-20闭包的理解和应用

      本文链接:https://www.haomeiwen.com/subject/tottvqtx.html