js實例屬性和原型屬性示例詳解
詳情請仔細研讀注釋,這里就廢話少說,直接上代碼了。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>測試文檔</title>
<script type="text/javascript">
// 實質(zhì)上屬性和方法是一樣的,方法是屬性為引用型的函數(shù)。
//一個對象有4種屬性:
// 1,構(gòu)造函數(shù)通過this關(guān)鍵字定義的屬性
// 2,構(gòu)造函數(shù)通過var關(guān)鍵字定義的屬性
// 3,構(gòu)造函數(shù)的原型對象添加的屬性
// 4,對象動態(tài)添加的屬性
//實例的公有屬性:1 通過this關(guān)鍵字定義的屬性 可訪問 1,2,3,4
//實例的私有屬性:2 通過var關(guān)鍵字定義的屬性。 可訪問 2
//實例的共享屬性:3 通過實例指向的原型添加的屬性。 可訪問 1,3,4
//實例的靜態(tài)屬性:4 對象動態(tài)添加的屬性。 可訪問 1,3,4
//總結(jié):
// 實例屬性:1,公有
// 2,私有
// 4,靜態(tài)
// 原型屬性:3,共享
//this定義的為特權(quán)屬性。全部可訪問
//var定義的為私有屬性。
//動態(tài)添加的屬性為公有屬性。不可訪問私有屬性
//實例對象指向的原型屬性為原型屬性。不可訪問私有屬性,優(yōu)先級低于公有屬性
//實例屬性主要有公有屬性和特權(quán)屬性構(gòu)成。均可被外部和原型屬性訪問。主要區(qū)別在于是否可訪問私有屬性
//原型屬性優(yōu)先級低于實例屬性??杀煌獠吭L問和實例屬性訪問(除私有屬性)
//-----------------此處為分割線-----------------------------
// 公有屬性:對象暴露給外部環(huán)境的屬性。也是對象的屬性。
// 私有屬性:對象內(nèi)部的屬性,往往不可訪問.在構(gòu)造函數(shù)層面上考慮才有意義。
// 靜態(tài)屬性:動態(tài)添加的屬性。也是對象的屬性。
// 共有屬性:所有構(gòu)造函數(shù)生成的實例所共享的屬性。
function User(){
// 公有屬性:每new一個User實例對象,都有的屬性。
// 為實例屬性,所有實例的屬性不共享內(nèi)存。
// 外部可訪問。
this.name='byronvis';
// 特權(quán)方法:每new一個User實例對象,都有的方法。
// 為實例方法,所有實例的方法不共享內(nèi)存。
// 外部可訪問。
// 可訪問公有屬性。
// 可訪問私有屬性。
this.sayName=function(){
alert(this.name);
alert(this.school);
alert(age);//變量聲明會自動提前。
alert(this.sex);
};
// 私有屬性:外部不可訪問。
// 僅對構(gòu)造函數(shù)有意義,對于new的User實例對象無意義。
var age=22;
// 私有方法:外部不可訪問。
// 僅對構(gòu)造函數(shù)有意義,對于new的User實例對象無意義。
function sayAge(){
alert(age);
}
sayAge();
}
// 共有屬性: 共享內(nèi)存。
User.prototype.school='zky';
// 共有方法:可訪問公有屬性。
// 共享內(nèi)存。
User.prototype.saySchool=function(){
alert(this.school);
alert(this.name);
alert(this.sex);
alert(age);
};
var obj=new User();
// 靜態(tài)屬性:就是動態(tài)添加的實例屬性。
obj.sex='man';
// 靜態(tài)方法:就是動態(tài)添加的實例方法。
obj.saySex=function(){
alert(this.sex);
alert(this.name);
alert(this.school);
alert(age);
};
//-----------------此處為分割線-----------------------------
//// 證明this關(guān)鍵字定義的屬性和動態(tài)添加的屬性本質(zhì)上一樣的,都可認(rèn)為是實例對象的公有屬性。
// 驗證: this關(guān)鍵字定義的屬性訪問動態(tài)添加的屬性
// obj.sayName();//true
// 驗證:動態(tài)添加的屬性訪問this關(guān)鍵字定義的屬性
// obj.saySex();//true
// 驗證:公有屬性訪問私有屬性
// obj.sayName();//true
obj.saySex();//false
// 驗證:共享屬性訪問私有屬性
// obj.saySchool();//false
</script>
</head>
<body>
測試文檔
</body>
</html>
小伙伴們是否看明白了,了解了實例屬性和原型屬性了嗎?本文講述的非常的詳細,推薦給大家,希望對小伙伴們能有所幫助
相關(guān)文章
左右懸浮可分組的網(wǎng)站QQ在線客服代碼(可謂經(jīng)典)
QQ在線客服在每一個web開發(fā)人員的記憶里都是一個經(jīng)典,既然是經(jīng)典,也就是必不可少,那就應(yīng)該很好的呈現(xiàn)出來,本文整理了一些左右懸浮可分組的網(wǎng)站QQ在線客服代碼,需要的朋友可以了解下2012-12-12JavaScript動態(tài)檢測密碼強度原理及實現(xiàn)方法詳解
這篇文章主要介紹了JavaScript動態(tài)檢測密碼強度原理及實現(xiàn)方法,結(jié)合具體實例形式詳細分析了javascript針對輸入字符串密碼強度檢測的原理與相關(guān)判斷操作技巧,需要的朋友可以參考下2019-06-06微信小程序事件對象中e.target和e.currentTarget的區(qū)別詳解
這篇文章主要介紹了微信小程序事件對象中e.target和e.currentTarget的區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05Javascript中this關(guān)鍵字的一些小知識
這篇文章主要介紹了Javascript中this關(guān)鍵字的一些小知識,本文講解了this的隱性綁定、var that = this兩部份內(nèi)容,需要的朋友可以參考下2015-03-03關(guān)于javascript document.createDocumentFragment()
documentFragment 是一個無父對象的document對象.2009-04-04