zoukankan      html  css  js  c++  java
  • js私有特性,公有特性和特权特性

    js中创建对象一般有两种常用方式一,对象字面量。二,构造函数法 。

    其中对象字面量方法很简单,在此不必赘述。


    对于一个对象来说,有属性(attribution)和方法(method),把对象的属性和方法统称起来不妨称为对象的特性(property)。


    对于对象字面量创建的对象,只有公有特性。对象的属性和方法只要通过点操作符就可以随意访问和修改,对象很容易被破坏,对象的封装性很差。

    而构造函数法创建的对象就能提供一定的封装性。实现类似于C++java的私有方法,常量,静态类等特性。


    下面看一个典型的例子


    //Person类
    function Person(){
    
      //私有特性
      var age='23';
    
      //特权特性
      this.name='Bronvis'  
      this.sayAge=function(){
        alert('age: '+age);
      }
    }
    //公有特性 Person.prototype={
      location:
    'Hangzhou'   sayLocation:function(){     alert('Location: '+this.location);   } } //类的公有静态特性 Person.country='China'; var obj=new Person(); //对象的静态特性 obj.sex='male';

     

    对于这种构造函数方式创建的对象。

    可以发现对象的属性和方法有4种方式创建。其中可以分为两大类,一,对象自身特性。二,所有对象共享的原型特性。


    一,对象自身特性

     

    1,var关键字

      私有特性。通过函数的作用域限定变量的可访问性仅限于函数内部,从而实现这些特性只能在对象内部访问。

     

    2,this关键字

      特权特性。通过this关键字实现创建的特性可以被外部任意对象通过点操作符访问,但相较于对象静态添加的特性,又能够访问对象的私有属性。所以,常被称为特权属性。

     

    3,对象静态特性

      公有特性。(和特权属性相比,不能访问私有特性)


    二,原型特性

     

      公有特性。和对象静态特性创建的属性的区别主要在于内存的占用。原型特性是多个对象的引用型特性共享同一片内存,而对对象静态特性则每个对象的引用型特性都占用内存。


    上面的典型例子,只创建了类的静态公有特性,下面的例子将会创建类的私有静态特性


    //通过闭包的方式实现类的静态私有属性
    var Person=(function(){
    
      //类的静态私有特性
      var Time;
    
      //返回一个构造函数
      return function (){
        
    //私有特性     var age='23';
        
    //特权特性     this.name='Bronvis'     this.sayAge=function(){       alert('age: '+age);     }
      } })();
    //类的公有静态特性 Person.country='China';

     

    其中类的静态私有属性常用来实现C++java语言中的常量

  • 相关阅读:
    同样的请求img代码,单个html文件和项目中的html文件请求结果不一样
    CSS中A标签断字不换行问题(基础知识)
    句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))
    Ext.Net 控件FileUploadField上传文件
    500内部服务器错误。你查找的资源存在问题,因而无法显示
    WebService 错误:无法加载协定为xxx的终结点配置部分,因为找到了该协定的多个终结点配置
    SyntaxError: unterminated string literal
    servlet入门
    myeclipse视图布局恢复
    JavaWEB开发入门
  • 原文地址:https://www.cnblogs.com/byronvis/p/4452786.html
Copyright © 2011-2022 走看看