js執行個體屬性和原型屬性

來源:互聯網
上載者:User

標籤:io   ar   sp   java   on   cti   bs   html   ad   

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>測試文檔</title> 
    <script type="text/javascript"> 



// 實質上屬性和方法是一樣的,方法是屬性為引用型的函數。 
//一個對象有4種屬性: 
//                 1,建構函式通過this關鍵字定義的屬性 
//                 2,建構函式通過var關鍵字定義的屬性 
//                 3,建構函式的原型對象添加的屬性 
//                 4,對象動態添加的屬性 
//執行個體的公有屬性:1      通過this關鍵字定義的屬性           可訪問   1,2,3,4 
//執行個體的私人屬性:2      通過var關鍵字定義的屬性。          可訪問   2 
//執行個體的共用屬性:3      通過執行個體指向的原型添加的屬性。      可訪問   1,3,4 
//執行個體的靜態屬性:4      對象動態添加的屬性。               可訪問  1,3,4 

//總結: 
//     執行個體屬性:1,公有 
//              2,私人 
//              4,靜態 
//     原型屬性:3,共用 

//this定義的為特權屬性。全部可訪問 
//var定義的為私人屬性。 
//動態添加的屬性為公有屬性。不可訪問私人屬性 

//執行個體對象指向的原型屬性為原型屬性。不可訪問私人屬性,優先順序低於公有屬性 

//執行個體屬性主要有公有屬性和特權屬性構成。均可被外部和原型屬性訪問。主要區別在於是否可訪問私人屬性 
//原型屬性優先順序低於執行個體屬性。可被外部存取和執行個體屬性訪問(除私人屬性) 


//-----------------此處為分割線----------------------------- 
// 公有屬性:對象暴露給外部環境的屬性。也是對象的屬性。 
// 私人屬性:對象內部的屬性,往往不可訪問.在建構函式層面上考慮才有意義。 
// 靜態屬性:動態添加的屬性。也是對象的屬性。 
// 共有屬性:所有建構函式產生的執行個體所共用的屬性。 

       function User(){ 
//           公有屬性:每new一個User執行個體對象,都有的屬性。 
//                    為執行個體屬性,所有執行個體的屬性不共用記憶體。 
//                    外部可訪問。 
           this.name=‘byronvis‘; 
//           特權方法:每new一個User執行個體對象,都有的方法。 
//                    為執行個體方法,所有執行個體的方法不共用記憶體。 
//                    外部可訪問。 
//                    可訪問公有屬性。 
//                    可訪問私人屬性。 
           this.sayName=function(){ 
            alert(this.name); 
               alert(this.school); 
            alert(age);//變數聲明會自動提前。 
            alert(this.sex); 
           }; 
//           私人屬性:外部不可訪問。 
//                    僅對建構函式有意義,對於new的User執行個體對象無意義。 
           var age=22; 
//           私人方法:外部不可訪問。 
//                    僅對建構函式有意義,對於new的User執行個體對象無意義。 
           function sayAge(){ 
               alert(age); 
           } 
           sayAge(); 
       } 
//       共有屬性: 共用記憶體。 
       User.prototype.school=‘zky‘; 
//       共有方法:可訪問公有屬性。 
//                共用記憶體。 
       User.prototype.saySchool=function(){ 
           alert(this.school); 
           alert(this.name); 
           alert(this.sex); 
           alert(age); 
       }; 
        var obj=new User(); 
//       靜態屬性:就是動態添加的執行個體屬性。 
        obj.sex=‘man‘; 
//       靜態方法:就是動態添加的執行個體方法。 
        obj.saySex=function(){ 
            alert(this.sex); 
            alert(this.name); 
            alert(this.school); 
            alert(age); 
        }; 
//-----------------此處為分割線----------------------------- 
////      證明this關鍵字定義的屬性和動態添加的屬性本質上一樣的,都可認為是執行個體對象的公有屬性。 
//       驗證: this關鍵字定義的屬性訪問動態添加的屬性 
//        obj.sayName();//true 
//        驗證:動態添加的屬性訪問this關鍵字定義的屬性 
//        obj.saySex();//true 
//        驗證:公有屬性訪問私人屬性 
//        obj.sayName();//true 
           obj.saySex();//false 
//        驗證:共用屬性訪問私人屬性 
//        obj.saySchool();//false 

   </script> 
</head> 
<body> 
    測試文檔 
</body> 
</html>

js執行個體屬性和原型屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.