• Java script OOP——浅谈


    一、this的详解

         1、谁最终调用函数,this就指向谁。(具体如下:)

             ① this指向的,永远只可能是对象!
             ② this指向谁,永远不取决于this写在哪!!而是取决于函数在哪调用。
             ③ this指向的对象,我们称之为函数的上下文context,也叫函数的调用者。

         2、this的指向规律(共有六条这是重点)

              ① 通过函数名()直接调用:this指向window

                    function func(){

                          console.log(this);
                    }
                    func(); 

          
              ② 通过对象.函数名()调用的:this指向这个对象     

                    var obj = {
                         name:"obj",
                         func1 :func
                    };
                    obj.func1(); 


              ③ 函数作为数组的一个元素,通过数组下标调用的:this指向这个数组    

                     var arr = [func,1,2,3];
                     arr[0](); // this--->arr


              ④ 函数作为window内置函数的回调函数调用:this指向window setInterval setTimeout 等...   

                     setTimeout(func,1000);// this--->window
                     //setInterval(func,1000);

     
             ⑤ 函数作为构造函数,用new关键字调用时:this指向新new出的对象

                        var obj = new func(); //this--->new出的新obj


             ⑥通过call、apply和bind调用,this指向我们规定的对象。(人为控制的)
                    func.call(obj,参数1 参数2 参数3....)
                    func.apply(obj,参数1 参数2 参数3....)
                    func.bind(obj,参数1 参数2 参数3....) var f = function.bind(obj)

    二、原型链        

               1、通过构造函数new出的对象,新对象的_proto_指向构造函数
               2、所有函数的_proto_指向function()内置函数的prototype
               3、非构造函数new出的对象包括( {} newObject() 对象的prototype )的_proto_指向Object的prototype
               4、Object的_proto_指向null

                                如下是一张自绘的原型链图

                          

    三、闭包

        JS中的作用域

             1、全局变量:函数外声明的变量

                 局部变量:函数内声明的变量

                  在JS中,函数为唯一的局部作用域,而if、for等其他{}没有自己的作用域
                 所以,函数外不能访问局部变量。其实,变量在函数执行完毕以后,占用的内存就被释放。

            2、如何访问函数私有变量?
                JS中,提供了一种"闭包"的概念:在函数内部,定义一个子函数,可以用子函数访问父函数的私有变量。执行完操作以后,将子函数通过return返回。
                  function func2(){
                        var num = 1;
                        function func3(){
                               var sum = num+10;
                                alert(sum);
                       }
                      return func3;
                   }

                   var f = func2();
                   f();

            3、闭包的作用:
                   ① 访问函数的私有变量;
                   ② 让函数的变量始终存在于内存中,而不被释放。

  • 相关阅读:
    linux 查看磁盘空间大小
    CSS里常见的块级元素和行内元素
    bootstrap改变上传文件按钮样式,并显示已上传文件名
    深度剖析:PHP中json_encode与json_decode
    2016 版 Laravel 系列入门教程
    支付宝私钥和公钥的生成方法
    iOS企业包安装注意事项详解(解决提示iPhone未受信任的问题)
    libevent的入门学习-库的安装【转】
    ibevent 和 libev 提高网络应用性能【转】
    libevent学习笔记 一、基础知识【转】
  • 原文地址:https://www.cnblogs.com/zw874827903/p/6853707.html
Copyright © 2020-2023  润新知