• javascript面向对象学习


    1、this指向问题,指向的是当前的方法属于谁,当前的方法属于谁就指向谁!!

    例子:

    oDiv.onclick = function () {

    this指向的是oDiv,因为这个方法属于oDiv

    }

    var obj = new Object();  //构造对象

    obj.show=function(){

        this====>>这时候的函数属于obj,所以this指向的是obj这个对象

    }

    Tab.prototype.show=function(){

         alert(this)这时候this指向的是后面new Tab函数的实例对象

    }

    被定时器调用的this都是指向window,事件的话指向事件====》》这时候使用_this来修改指向问题

    2、函数的形式

    函数:

    方法:

    事件处理函数:

    构造函数==》函数用来构造对象叫什么构造函数!!!(首字母大写)

    3、构造函数

    用工厂方式构造对象

    工厂方式的问题:

    1、没有new

    2、每个对象都有一套自己的函数---浪费资源 

    this:当前的方法属于谁就指谁

    函数前面有new的时候,会创建一个新的object,这时候this指向的是这个object

    全局函数,this指向的是window,new show()指向是object(使用new函数时系统会在函数内部创建一个对象)!!

    4、原型prototype

    类比:

    prototype  ====》》class  改变一类元素的样式   

    给一个对象加方法  ===》》行间样式  改变一个元素的样式  

    var arr1 = new Array(12, 5, 8, 4);

    var arr2=new Array(44, 6,5,4);

    Array.prototype.sum=function(){}  这样arr1跟arr2都有sum这个方法

    arr1.prototype.sum=function(){}  这样只有arr1有sum这个方法,arr2没有

    类                    模子

    对象(实例)     蛋糕

    var arr=new Array();

    Array类  不具备实际的功能,只能用来构造对象

    arr对象  真正有功能的东西,被类给构造出来的东西

    类就是构造函数 Array是类,arr是构造函数

    prototype就是在原类的基础上进行方法扩展,用元素来给构造函数增加方法!

    总结

    对象的组成  方法(函数) 属性(变量)

    用构造函数来增加属性,每个对象的属性各不相同!!!

     对象组成和继承对象:

    1、属性

    2、方法

    继承:

    1、先执行父级的构造函数,然后再添加子类的属性!!

    注意!!当直接使用  Worker.prototype=Person.prototype;的方法来继承父级的方法时,子级跟父级指向同一个空间,因此修改子级的同时会修改父级,需要做如下修改!!

    for( var i in Person.prototype)

    {

        Worker.prototype[i]=Person.prototype[i];

    }

    常见面试题误区

    引用

    //指向同一个指针
    var arr1=[123];
     var  arr2=arr1;
     arr2.push("4");
    alert(arr1)====>>1.2.3.4
    //解析这时候arr2引用arr1,那么此时,arr2跟arr1是指向同一指针空间,所以其中一个改变,都会跟着发生改变
    
    //指向不同指针
    var arr1=[123];
     var  arr2=[];
    for(var i in arr1){
         arr2[i]=arr1[i]; //循环赋值
    }
    
    arr2.push("4");
    
    alert(arr1) ====>>123
  • 相关阅读:
    Windows 下 GoLang 获取当前线程ID
    使用mbedtls加解密(RSA AES)
    mysql c++ jdbc 示例
    No migrations to apply. django同步数据库失败
    python3 rsa 加解密 支持长字符串
    python3 计算rsa私钥 已知n e计算d
    linux打印控制方式
    获取进程加载的dll
    go get报错package golang.org/x/net/proxy: unrecognized
    vector中数据释放崩溃问题
  • 原文地址:https://www.cnblogs.com/qdlhj/p/9773699.html
Copyright © 2020-2023  润新知