欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 前端技术 > javascript >内容正文

javascript

js学习笔记-尊龙游戏旗舰厅官网

发布时间:2024/1/17 javascript 30 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 js学习笔记-oo疑问之封装 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

         封装是面向对象的基础,今天所要学习的匿名函数与闭包就是为了实现js的面向对象封装。封装实现、封装变量,提高数据、系统安全性,封装正是面向对象的基础。



        即没有名字的函数,其创建方式为

                 function(){...}

        单独存在的匿名函数,无法执行,可通过赋值给变量调用或通过表达式自我执行来实现执行。

                  1.赋值给变量为一般的函数使用方式

                          var run = function(){

                                   return '方法执行中';

                          };

                          alert(run());

                  2.通过表达式自我运行

                          (function(arguments可选)

                          {

                                   alert('方法执行中');

                           })(arguments);



        在一个普通函数的内部,创建一个匿名函数,匿名函数可訪问普通函数中的变量,进而实现类似于面向对象中封装的特性,这个匿名函数就叫做相应普通函数的闭包。闭包就是对外创建的接口,通过接口达到訪问函数内部变量的效果。

        functionrun() {

                 var username = 'forrest';

                 return function () { //通过匿名函数返回 box()局部变量

                          return username;

                 };

        }

         //alert(username);                  //错误username is not defined

        alert(run()());

       特点:闭包中使用的局部变量会驻留在内存中,避免了使用全局变量造成的命名冲突等情况的发生。值得注意的是闭包中使用thiskeyword,指向的是window对象。

 


         为了更好的安全性、数据保护,则须要对数据进行私有化的封装,而js中没有块级作用域的概念(即出了{}的范围,仍能够訪问声明的变量),但有了前面的基础,我们就能够达到像其它正规面向对象语言的封装效果。

function user(){(function(){for(i = 0; i<5; i ){alert(i);}})();alert(i); //此处无法訪问变量i}//私有作用域取代全局变量(function(){var username= 'forrest';alert(username); })(); //匿名函数运行完成后,变量马上销毁//訪问私有变量function user(){var username= forrest; //私有变量function learn(){ //私有函数return '学习中';};//对外提供接口,间接訪问内部成员this.userlearn = function(){return username learn();};} var user = new user()alert(user.userlearn());//实现get()、set()function user(value){var user = value;this.getuser = function(){return user;}this.setuser = function(value){user = value;}}var user = new user('forrest');alert(user.getuser());user.setuser('li');alert(user.getuser());//静态私有变量(function(){var user = '';user = function(value){user = value;};user.prototype.getuser = function(){return user;};user.prototype.setuser = function(value){user = value;};})();//字面量方式的私有化function normaluser(){}var user = function(){var user = 'forrest';function learn(){return user '学习中...';};var nu = new normaluser();nu.userlearn = function(){return learn();};return nu;}();alert(user.userlearn());
         

结语:


         js虽不是一门正统的面向对象的语言,但用它也能达到面向对象的封装、继承、多态等的效果,学习起来还是须要好好理解的,特别是对于使用js不是特别多的人来说,仅仅能等到以后的逐步应用来解决这一系列的问题,更进一步体会它在面向对象方面的应用。

转载于:https://www.cnblogs.com/mfrbuaa/p/4001426.html

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是尊龙游戏旗舰厅官网为你收集整理的js学习笔记-oo疑问之封装的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图