zoukankan      html  css  js  c++  java
  • (复习)js之属性与继承

    js是函数第一型的语言,在下面使用函数来创建对象。

    一、属性

    1.私有属性

    在函数中,使用var或function声明来维持私有属性(包括普通变量和方法)

    2.共有属性

    共有属性采用this.attr的形式

    3.原型属性

    以objName.prototype.attr设置的属性,即在原型对象上添加的属性

    4.类属性

    objName.attr设置的属性

    例子:

    function obj(){
        
    var a = 1;
        
    this.b = 2;       
        
    function c(){
            
    return 3;
        }     
        
    this.d = function(){
            
    return 4;
        }
    }    
    var o = new obj();
    document.write(o.a
    +"  "+o.b+"  "+o.c+"  "+o.d());

    得到结果: undifined    2    undifined    4

    二、继承

    1.构造继承

    方法:在子类的构造方法中,通过apply或call函数调用父类的构造函数,实现父类属性到子类构造函数中this的复制

    function A(){     //父类
        this.a = 1;
    }
    function B(){     //子类
        A.apply(this);
    }

    缺点:不能继承原型属性

    优点:能够实现多继承,即在子类构造函数中多个父类apply即可;能够解决构造函数带参数的问题

    2.原型继承

    方法:直接只用对象的prototype属性设置父对象(非父类)

    B.prototype = new A();

    缺点:修改了子对象的constructor属性;子类构造函数参数传递的问题;只能实现单继承;被迫实例化父类,有很多负作用

    3.实例继承

    基于的思想:若构造函数的返回值为值类型(没有写return的返回undefined),new只是初始化this传递进来的值;若构造函数返回一个引用类型,则new返回的引用类型所指的对象

    function B(){
        
    var a = new A();  //创建父类实例
         a.attr1 = 1;    //添加属性
        return a; 
    }

    优点:能够对属性进行扩充

    4.clone法

    思路:使用自定义的clone把父类的所有属性copy一份(来个深度克隆,包括prototype属性)

    function clone(obj){
        
    if(typeof(obj) != "object")return obj;
        
    if(obj == null)return obj;
        
    var newObj = new Object();
        
    for(var i in obj){
            newObj[i] 
    = clone(obj[i]);
        }
        
    return newObj;
    }
  • 相关阅读:
    javaweb学习2
    javaweb学习1
    Java学习17
    python 正则表达式
    python 常用库
    python 常用内置函数
    python 函数高级功能
    python 正则表达式findall
    tcpdump
    安卓软件学习进度_1
  • 原文地址:https://www.cnblogs.com/return/p/1594143.html
Copyright © 2011-2022 走看看