jsはどうやってクラス(パッケージ)を作りますか?
7854 ワード
他の対象言語を学んだことがあるJavaScrippterさんは、クラスを使ったことがあるかもしれません.例えば、クラス{}などの定義の一連の方法ですが、初心者がjsを勉強しているのを見て、JavaScriptは対象言語です.最初はずっとjsが対象に向かってプログラミングすることに悩んでいましたが、ここ数日はある程度知っています.js類に対する理解を話してください.
クラスとは、以下の機能があります.コンストラクタ 静的属性、静的方法 共有属性、共有方法 プライベート属性、プライベート方法 この文章では、jsを使ってクラスのパッケージを実現し、上記の機能を実現する方法について説明します.
1.簡単なクラス
もしコンストラクタモードについてよく分からないなら、ここでjs作成対象のデザインモードを見てもいいです.
2.複雑なクラス
上の例があったら、私達はこの基礎の上で私達の改善を行うことができます.
3.パッケージjs類
ここではクローズドで実装し、まずクローズドの概念を説明します.クローズドコンセプト:一つの関数は、別の関数のスコープ内の変数にアクセスする権利があります.すなわち、一つの関数の内部に別の関数を作成します.
以下のように実現します
まとめ:いくつかの共通属性、方法は、静的に設定することができます.このように、実装のたびにメモリリソースを追加的に開く必要がなく、本当の意味での共有を達成することができます. のいくつかの共通の属性方法は、内部プログラム処理時のみ共有に到達したい場合、静的プライベート属性方法、 に設定されている.いくつかの共通の属性方法は、インスタンスオブジェクトで共有したい場合、プロトタイプ属性方法として設定され、
クラスとは、以下の機能があります.
1.簡単なクラス
var Person = function(name, age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(this.name);
};
}
どうですか?Taは類ではないと思いますか?それならこうしてもいいです.var Person = function(name, age){
//
this.name = name;
this.age = age;
//
this.sayName = function(){
console.log(this.name);
};
}
へへへ…ここは狡猾な表情をしています.もしコンストラクタモードについてよく分からないなら、ここでjs作成対象のデザインモードを見てもいいです.
2.複雑なクラス
上の例があったら、私達はこの基礎の上で私達の改善を行うことができます.
var Person = function(name, age){
//
this.name = name;
//
this.sayName = function(){
console.log(this.name);
};
// ( )
var home = "China";
// ( )
function sayHome(){
console.log(home);
}
//
this.setAge = function(age){
console.log(age + 12);
};
this.setAge(age);
}
// ( )
Person.sayAge = function(){
console.log("your age is 12");
}
// ( )
Person.drink = "water";
// ( )
Person.prototype.sayWord = function(){
console.log("ys is a boy");
}
jsの中で上述のアナログの方法を利用して、種類の創建に対して実現して、この基礎の上で、私達は不安な現状、彼に対してカプセル化を行って、彼を1つの全体にならせて、更にjsのカプセル化性を体現することに利益があります.3.パッケージjs類
ここではクローズドで実装し、まずクローズドの概念を説明します.クローズドコンセプト:一つの関数は、別の関数のスコープ内の変数にアクセスする権利があります.すなわち、一つの関数の内部に別の関数を作成します.
以下のように実現します
var Person = (function(){
//
var home = "China";
function sayHome(name){
console.log(name + "'s home in " + home);
}
//
function _person(name, age){
var _this = this;
// , new
if(_this instanceof _person){
// ,
_this.name = name;
_this.getHome = function(){
// ,
sayHome(_this.name);
};
_this.test = sayHome; //
//
_this.setAge = function(age){
_this.age = age + 12;
}(age);
}else{
return new _person(name, age);
}
}
//
_person.prototype = {
constructor: _person,
drink: "water",
sayWord: function(){
console.log("ys is a boy");
}
}
return _person;
})();
以下のように呼び出しますvar p1 = new Person("ys", 12);
p1.getHome(); //ys's home in China
console.log(p1.age); //24
var p2 = Person("ys", 12);
p2.getHome(); //ys's home in China
console.log(p2.age); //24
console.log(p2.test == p1.test); //true,
上のコードのように、私達はjsでクラスを実現しました.まとめ: