詳情請仔細研讀註釋,這裡就廢話少說,直接上程式碼了。 複製程式碼 程式碼如下: 測試文件 <br /> // 實質上屬性和方法是一樣的,方法是屬性為引用型的函數。 <br /> //一個物件有4種屬性: <br /> // 1,且建構子透過this關鍵字定義的屬性 <br /> // 2,且建構子透過var關鍵字定義的屬性 <br /> // 3,建構子的原型物件所新增的屬性 <br /> // 4,且物件動態新增的屬性 <br /> //實例的公有屬性:1 透過this關鍵字定義的屬性 可存取 1,2,3,4 <br /> //實例的私有屬性:2 以var關鍵字定義的屬性。 可存取 2 <br /> //實例的共享屬性:3 透過實例指向的原型所新增的屬性。 可存取 1,3,4 <br /> //實例的靜態屬性:4 物件動態新增的屬性。 可存取 1,3,4 <p>//總結: <br /> // 實例屬性:1,公有 <br /> // 2,且私有 <br /> // 4,靜態 <br /> // 原型屬性:3,共享 <p>//this定義的為特權屬性。全部可存取 <br /> //var定義的為私有屬性。 <br /> //動態新增的屬性為公有屬性。不可存取私有屬性 <p>//實例物件指向的原型屬性為原型屬性。不可存取私有屬性,優先權低於公有屬性 <p>//實例屬性主要有公有屬性和特權屬性構成。均可被外部和原型屬性存取。主要區別在於是否可存取私有屬性 <br /> //原型屬性優先權低於實例屬性。可被外部存取和實例屬性存取(除私有屬性) <p><br /> //-----------------此處為分割線-------------------------- --- <br /> // 公有屬性:物件暴露給外部環境的屬性。也是對象的屬性。 <br /> // 私有屬性:物件內部的屬性,往往不可存取.在建構函式層面上考慮才有意義。 <br /> // 靜態屬性:動態新增的屬性。也是對象的屬性。 <br /> // 共有屬性:所有建構函式產生的實例所共享的屬性。 <p> function User(){ <br /> // 公有屬性:每new一個User實例對象,都有的屬性。 <br /> // 為實例屬性,且所有實例的屬性不共享記憶體。 <br /> // 外部使用。 <br /> this.name='byronvis'; <br /> // 特權方法:每new一個User實例對象,都有的方法。 <br /> // 為實例方法,且所有實例的方法不共享記憶體。 <br /> // 外部使用。 <br /> // 可存取公有化物。 <br /> // 可存取私有物件。 <br /> this.sayName=function(){ <br /> alert(this.name); <br /> alert(this.school); <br /> alert(age);//變數宣告會自動事先。 <br /> alert(this.sex); <br /> }; <br /> // 私有屬性:外在無法存取。 <br /> // 且且僅具建構子意義,且對於new的User實例物件無意義。 <br /> var age=22; <br /> // 私有方法:外在無法存取。 <br /> // 且且僅具建構子意義,且對於new的User實例物件無意義。 <br /> function sayAge(){ <br /> alert(age); <br /> } <br /> sayAge(); <br /> } <br /> // 共有屬性: 共享記憶體。 <br /> User.prototype.school='zky'; <br /> // 共有方法:可存取公有屬性。 <br /> // 共享記憶體。 <br /> User.prototype.saySchool=function(){ <br /> alert(this.school); <br /> alert(this.name); <br /> alert(this.sex); <br /> alert(age); <br /> }; <br /> var obj=new User(); <br /> // 靜態屬性:就是動態新增的實例屬性。 <br /> obj.sex='man'; <br /> // 靜態方法:就是動態新增的實例方法。 <br /> obj.saySex=function(){ <br /> alert(this.sex); <br /> alert(this.name); <br /> alert(this.school); <br /> alert(age); <br /> }; <br /> //-----------------此處為分割線-------------------------- --- <br /> //// 證明this關鍵字定義的屬性和動態新增的屬性本質上一樣的,都可視為實例物件的公有屬性。 <br />// 驗證: this關鍵字定義的屬性存取動態新增的屬性 <br /> // obj.sayName();//true <br /> // 驗證:動態新增的屬性存取this關鍵字定義的屬性 <br /> // obj.saySex();//true <br /> // 驗證:公有屬性存取私有屬性 <br /> // obj.sayName();//true <br /> obj.saySex();//false <br /> // 驗證:共享屬性存取私有屬性 <br /> // obj.saySchool();//false <p> 測試文件 小夥伴們是否看懂了,了解了實例屬性和原型屬性了嗎?本文講述的非常的詳細,推薦給大家,希望對小夥伴們能有所幫助