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