zoukankan      html  css  js  c++  java
  • JavaScript 属性和方法的类型

    JavaScript里,对象的方法和属性支持4种不同的类型

    1.私有类型
       对外界完全不具有访问性

    function MyClass(){
       var elements = []; //私有成员,在对象外无法访问
        elements = Array.apply(elements, arguments);
    }
       只有通过特定的getter和setter才能访问
     

    2.动态公有类型
      外界可以访问,每个对象实例持有一个副本,它们之间不会相互影响

    function MyClass(){
       var elements = []; //私有成员,在对象外无法访问 
    elements = Array.apply(elements, arguments);
    //公有属性,可以通过“.”运算符或下标来访问
    //this.length是私有成员elements是的length属性的getter
        this.length = {
            valueOf: function(){return elements.length;},
            toString: function(){return elements.length;}
        }
    }
    

    3.静态公有类型
       也叫原型属性,它的特点是所有对象实例共享唯一副本,对它的改写会相互影响

    MyClass.prototype.x = 20; //原型属性

    4.类属性
       作为类型的属性,而不是对象实例的属性,在没有构造对象时可以访问

    MyClass.y = 30; //类属性
    

    例子:

    <html>
    <head></head>
    <body>  
    <script language="javascript" type="text/javascript">  
    <!--
        function dwn(s)
        {
            document.write(s + "<br/>");
        }
        function MyClass()
        {
            var p = 100;  //private property; 私有属性
            this.x = 10;  //dynamic public property 动态公有属性
        }
        MyClass.prototype.y = 20; // 原型属性
        MyClass.z = 30;  //static property //类属性
    
        var a = new MyClass();
        dwn(a.p);  //undefined 私有属性对象无法访问到
        dwn(a.x);   //10  公有属性
        dwn(a.y);   //20  公有属性
        a.x = 20;
        a.y = 40;
        dwn(a.x);    //20  
        dwn(a.y);    //40  //动态公有属性y覆盖了原型属性y
        delete(a.x);
        delete(a.y);
        dwn(a.x);    //undefined  动态公有属性x被删除后不存在
        dwn(a.y);    //20  动态公有属性y被删除后还原为原型属性y
        dwn(a.z);    //undefined 类属性无法通过对象访问
        dwn(MyClass.z);  //30 类属性应该通过类访问
    -->
    </script>  
    </body>   
    </html>
        结果:  

        undefined
        10
        20
        20
        40
        undefined
        20
        undefined
        30

  • 相关阅读:
    php去除数组中重复值,并返回结果!
    SignalR 2 入门
    SignalR支持的平台
    SignalR简介
    作业调度系统quartz.net
    Oracle安装心得
    maven的项目目录解析
    web.xml的<url-parttern>的匹配规则
    Web.xml中四种验证方式
    Web.xml
  • 原文地址:https://www.cnblogs.com/IsDotNet/p/1501434.html
Copyright © 2011-2022 走看看