JS学習ノート-OO疑問のパッケージ
3036 ワード
パッケージはオブジェクト指向の基本であり、今日勉強する匿名関数とクローズドはJSのオブジェクト指向パッケージを実現するためです.実装、実装、パッケージ変数は、データ、システムのセキュリティを向上させ、パッケージはオブジェクト指向の基礎です.
一、匿名関数
名前の関数がありません.
function(){…}
個々に存在する匿名関数は、変数に値を割り当てて呼び出したり、表式で自己実行したりすることで実行できません.
1.変数に値を付ける一般的な関数の使い方
var run=function(){
returnメソッド運転中';
};
alert(run)
2.表現による自己実行
(function(argmentsオプション)
{
alert('メソッド運転中')
})(argments)
二、閉め切ってください
通常の関数の内部に匿名関数を作成し、匿名関数は、通常の関数の変数にアクセスし、オブジェクトにカプセル化されたような特性を実現します.この匿名関数は、一般関数に対応するクローズドと呼ばれます.クローズドは、外部に作成されたインターフェースで、インターフェースを介して関数内部変数にアクセスする効果です.
functionrun(){
var username='Forrest'
return function()//匿名関数でボックス()のローカル変数に戻ります.
return username;
};
}
//alert; //エラーusername is not defined
alert(run)
特徴:クローズドで使用される局所変数はメモリに存在し、グローバル変数を使用したネーミング衝突などが発生しないようにします.注意すべきことは、クローズドでthisキーワードを使用して、ウィンドウズオブジェクトを指すことです.
パッケージ
より良い安全性、データ保護のためには、データを私有化するパッケージが必要であり、JSにはブロックレベルの機能領域という概念がない(すなわち、宣言の変数にもアクセスできる)が、前の基礎があれば、他の正規面から対象言語へのパッケージ効果を達成することができる.
結語:
JSは正统的な対象に向けた言叶ではないが、対象に向けたパッケージ、継承、多态などの効果も得られるので、勉强する上ではよく理解する必要があります.特にJSを使う人は特に多くないです.今后のアプリケーションでこの一连の问题を解决するしかないです.
一、匿名関数
名前の関数がありません.
function(){…}
個々に存在する匿名関数は、変数に値を割り当てて呼び出したり、表式で自己実行したりすることで実行できません.
1.変数に値を付ける一般的な関数の使い方
var run=function(){
returnメソッド運転中';
};
alert(run)
2.表現による自己実行
(function(argmentsオプション)
{
alert('メソッド運転中')
})(argments)
二、閉め切ってください
通常の関数の内部に匿名関数を作成し、匿名関数は、通常の関数の変数にアクセスし、オブジェクトにカプセル化されたような特性を実現します.この匿名関数は、一般関数に対応するクローズドと呼ばれます.クローズドは、外部に作成されたインターフェースで、インターフェースを介して関数内部変数にアクセスする効果です.
functionrun(){
var username='Forrest'
return function()//匿名関数でボックス()のローカル変数に戻ります.
return username;
};
}
//alert; //エラーusername is not defined
alert(run)
特徴:クローズドで使用される局所変数はメモリに存在し、グローバル変数を使用したネーミング衝突などが発生しないようにします.注意すべきことは、クローズドでthisキーワードを使用して、ウィンドウズオブジェクトを指すことです.
パッケージ
より良い安全性、データ保護のためには、データを私有化するパッケージが必要であり、JSにはブロックレベルの機能領域という概念がない(すなわち、宣言の変数にもアクセスできる)が、前の基礎があれば、他の正規面から対象言語へのパッケージ効果を達成することができる.
function user(){
(function(){
for(i = 0; i<5; i++){
alert(i);
}
})();
alert(i); // i
}
//
(function(){
var username= 'Forrest';
alert(username);
})(); // ,
//
function User(){
var username= Forrest; //
function learn(){ //
return ' ';
};
// ,
this.userlearn = function(){
return username + learn();
};
}
var user = new User()
alert(user.userlearn());
// get()、set()
function User(value){
var user = value;
this.getUser = function(){
return user;
}
this.setUser = function(value){
user = value;
}
}
var user = new User('Forrest');
alert(user.getUser());
user.setUser('Li');
alert(user.getUser());
//
(function(){
var user = '';
User = function(value){
user = value;
};
User.prototype.getUser = function(){
return user;
};
User.prototype.setUser = function(value){
user = value;
};
})();
//
function NormalUser(){}
var user = function(){
var user = 'Forrest';
function learn(){
return user + ' ...';
};
var nu = new NormalUser();
nu.userlearn = function(){
return learn();
};
return nu;
}();
alert(user.userlearn());
結語:
JSは正统的な対象に向けた言叶ではないが、対象に向けたパッケージ、継承、多态などの効果も得られるので、勉强する上ではよく理解する必要があります.特にJSを使う人は特に多くないです.今后のアプリケーションでこの一连の问题を解决するしかないです.