第十九章 公私有变量及特权方法

2021-05-31  本文已影响0人  扶光_

一,函数回调

1.setTimeout 延时器

延时器就是过了几秒之后执行里面的代码 跟定时器的格式是一样的,都是毫秒值

 setTimeout(function(){ 
            alert("aaa")
        },2000)

2.回调函数

 function fn(index){
            alert(index)
        }
        fn("一giao我里giaogiao")
        //将fn函数当做参数传入进去
        function fncallback(functionName,i){
            functionName(i);
        }
        fncallback(fn,"干")

定时器就是一个回调函数。

二,私有内部函数


        //私有 内部函数 
        var person = function(){
            function pen(){
                console.log("铅笔");
            }
            return pen;
        }
        // console.log(person()());   undefined  铅笔
        person()()    
铅笔

2.私有变量和公有变量

私有变量 外部无法访问
公有变量 外部可以访问
如下面的例子

 function Person(){
                var a = "羊羊"//私有变量     
                this.age = 11//公有变量
        }
        var person = new Person()
        console.log(person.age);
        console.log(person.a);
结果

同样公私有函数也是一样的


        function Person(){
            var a = function(){
                console.log("aaaaaa");
            }

            this.b = function(){
                console.log("bbbbbb");
            }
        }
        var person = new Person();
        person.a();
        person.b();
结果

外部访问不到函数里面a这个私有函数所以会出现报错。
那么问题来了,在一些情况下,如果我们想在函数外部访问私有变量或私有方法那么该如何去访问呢?下面就用特权方法来实现

三,特权方法

什么是特权方法呢?
简单来说:就是通过公有函数方法找到私有变量或私有函数

  function Fn(){
            var a = 999;
            var fn1 = function() {
                return "giao"
            }
           
        } 
        var fn = new Fn();
       
        console.log(a);
结果

如上面我们直接访问内部的私有变量是访问不到的 应该是下面的代码这样

function Fn(){
            var a = 999;
            var fn1 = function() {
                return "giao"
            }
            //创建的一个公有函数 来返回a的值
            this.find = function(){
                return a;
            }
        } 
        var fn = new Fn();
        // //可以通过公有函数找到私有变量
        console.log(fn.find());

成功访问到了!


image.png
 function Fn(){
            var a = 999;
            var fn1 = function() {
                return "giao"
            }
            //创建的一个公有函数 来返回a的值
            this.find = function(){
                return fn1();
            }
        } 
        var fn = new Fn();
        // //可以通过公有函数找到私有函数fn1
        console.log(fn.find());
访问私有函数
上一篇下一篇

猜你喜欢

热点阅读