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

