ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript での情報のカプセル化 js オブジェクトの概要

JavaScript での情報のカプセル化 js オブジェクトの概要

高洛峰
高洛峰オリジナル
2017-01-04 09:33:30952ブラウズ

JavaScript での情報のカプセル化
コーディングする前に、次の用語を理解する必要があります;
カプセル化: 内部データの表現と実装の詳細を隠すこと;
プライベート プロパティとメソッド: 外部の世界はパブリック インターフェイス アクセスを通じてのみデータと対話できます。
スコープ: JavaScript では関数のみがスコープを持ち、関数内で定義されたプロパティとメソッドには外部からアクセスできません
特権メソッド: 関数の内部変数 (プロパティ) にアクセスできる関数内で宣言されたメソッドは、比較的高価なメモリ;

function Person() 
{ 
/* 
* 声明私有的数据 
* 昵称,年龄,邮箱 
*/ 
var nickName, age, email; 
/* 
* 需要访问私有数据的方法(特权方法) 
* 每生成一个实例将为特权方法生成一个新的副本 
*/ 
this.setData = function(pNickName, pAge, pEmail) 
{ 
nickName = pNickName; 
age = pAge; 
email = pEmail 
}; 
this.getData = function() 
{ 
return [nickName, age, email]; 
} 
} 
/* 
* 不需要直接访问私有数据的方法(公有方法) 
* 不管生成多少实例,公有方法在内存中只存在一份 
*/ 
Person.prototype = { 
showData: function() 
{ 
alert("个人信息:" + this.getData().join()); 
} 
}

外部コードはプライベート メソッドまたはパブリック メソッドを通じて内部プロパティにアクセスします

var p = new Person(); 
p.setData("sky", "26", "vece@vip.qq.com"); 
p.showData();

デモ コード:

<script> 
function Person() 
{ 
var nickName, age, email; 
this.setData = function(pNickName, pAge, pEmail) 
{ 
nickName = pNickName; 
age = pAge; 
email = pEmail 
}; 
this.getData = function() 
{ 
return [nickName, age, email]; 
} 
} 
Person.prototype = { 
showData: function() 
{ 
alert("个人信息:" + this.getData().join()); 
} 
} 
var p = new Person(); 
p.setData("PHP中文网", "4", "admin@php.cn"); 
p.showData(); 
</script>

JavaScript の詳細と、カプセル化された js オブジェクトの使用開始に関する関連記事については、PHP に注意してください。中国語のサイトです!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。