ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptでプライベート属性を持つクラスの書き方(1)_javascriptスキル

JavaScriptでプライベート属性を持つクラスの書き方(1)_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:10:50921ブラウズ

私は以前、JavaScript でクラスを記述する方法について説明しました。ただし、プライベート実装については議論されていません。この記事を読んでください。

JS におけるプライベート プロパティの実装の本質は var クロージャであることを知っています。次のように

コードをコピーします コードは次のとおりです。

function Person(n, a ){
// パブリック
this.name = n;
// プライベート
var age = a;
this.getName = function(){
return this.name;
}
this.getAge = function(){
return age;
}
}

テストは次のとおりです。年齢は非公開であり、年齢は非公開です。ドット演算子を使用して取得され、getName メソッドのみが使用可能です。
コードをコピー コードは次のとおりです。

var p = new Person('jack' ,23) ;
console.log(p.age); // 未定義
console.log(p.getAge()); // 23

上記、以下で使用して実装するツール機能です。
コードをコピー コードは次のとおりです:

/**
* @param {String} className
* @param {Function} classImp
 */
function $class(className, classImp){
function clazz(){
if(typeof this.init == "function"){
this.init.apply(this, argument); 🎜> }
}
classImp.call(clazz.prototype);
window[className] = clazz;
}

クラスを作成します

コードをコピーします コードは次のとおりです:
$class('person', function(){
// プライベート属性はここで定義されます
var age = '';
this.init = function(n, a){
// すべてのプロパティは this にハングされ、初期化されます
this.name = n;
// プライベート プロパティの初期化
age =
};
return this.name }; .getAge = function( ){
>

コードは次のとおりです。


var p = new person('jack ',23);
コンソール.log(p.name); // Jack は共有できます。ドット演算子を使用して
console.log(p.age) を取得します。 // 未定義のプライベートはドット演算子では取得できません
console.log(p) .getAge()); // 23 プライベート年齢は共通メソッド getAge を通じてのみ取得できます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。