JavaScriptがどのように継承されているかを深く理解する.
4472 ワード
最近ネットで一人の面接を見て、よく分からないところがたくさんあります.だから、文章を書いて、問題に対する理解を深めます.
文章の中で一つの問題に言及しました.JavaScriptはどのように継承を実現しますか?インターネットで見つけた方法や実例を紹介して、印象を深めます.
JavaScriptのfunctionは万能であることを知っています.使用する関数の定義以外に、種類の定義にも使えます.
JavaScriptの継承は、C++といくつかのオブジェクトに向けての言語とは違って、彼はpublic、prvateなどのアクセス制御修飾もないし、implementや他の特定の記号もないです.
javascript類の継承については、以下の例を参照してください.
JavaScriptの中の類と継承のいくつか原理を模擬します.
オブジェクト指向の言語では、クラスを使ってカスタムオブジェクトを作成します.しかし、JavaScriptのすべてのものは対象です.どのような方法でカスタムオブジェクトを作成しますか?
これはもう一つの概念-プロトタイプを導入する必要があります.簡単にプロトタイプを一つのモデルとして見ることができます.新しく作成したユーザー定義の対象は全部このテンプレートのコピーです.
prototypeを通じてカスタムオブジェクトを作成する例を見てみましょう.
以下では一例を通して、カスタムオブジェクトを作成するjavascriptが行った具体的な仕事を具体的に説明します.
空白のオブジェクト(new Object()を作成します.Person.prototypeの属性をコピーしてこの空のオブジェクトにします.このオブジェクトをthisキーワードでコンストラクタに伝達し,コンストラクタを実行した.このオブジェクトに変数zhangを割り当てます.すべての仕事が完了しました.prototypeテンプレートが実例化されたオブジェクトにコピーされているのではなく、リンクされていることを証明するために、下記のコードを参照してください.
JavaScriptで簡単な継承はどうやって実現しますか?
以下の例は従業員タイプのEmployeeを作成します.Personからプロトタイプのすべての属性を継承しました.
もちろんまとめてみます.javascriptにおける継承メカニズムは、あくまでもシミュレーションによるもので、対象に向けた言語の中には、明らかに粗く、いくつかの欠陥があります.しかし、全体としては、フロントエンドの開発者の熱意を低下させるものではありません.
文章の中で一つの問題に言及しました.JavaScriptはどのように継承を実現しますか?インターネットで見つけた方法や実例を紹介して、印象を深めます.
JavaScriptのfunctionは万能であることを知っています.使用する関数の定義以外に、種類の定義にも使えます.
JavaScriptの継承は、C++といくつかのオブジェクトに向けての言語とは違って、彼はpublic、prvateなどのアクセス制御修飾もないし、implementや他の特定の記号もないです.
javascript類の継承については、以下の例を参照してください.
<br>function Person() {
<br> //
<br> this.Gender = "female";
<br> this.Age = 18;
<br> this.Words = "Silence";
<br> //
<br> this.shouting = function() {
<br> alert(" ! ");
<br> }
<br>}
<br>//
<br>function Programmer() {
<br> this.base = Person;
<br>}
<br>Programmer.prototype = new Person;
<br>//
<br>Programmer.prototype.typeCode = function() {
<br> alert(" !IT , 。 ");
<br>}
<br>//
<br>function sayHello() {
<br> var a = new Programmer();
<br> alert(a.Gender); //
<br> a.shouting(); //
<br> a.typeCode(); //
<br>}
<br>sayHello();
<br>
上記の例では、まず一つのpersonクラスを宣言して、いくつかの属性と方法を含んでいます.それから、もう一つのプログレアム類を宣言しました.この属性は必要ではありません.しかし、規範として、今後は検索対象に継承される類型を書く必要があります.そしてプログレアムのプロトタイプのオブジェクトにpersonクラスをコピーしました.そして、クラスの継承が実現しました.JavaScriptの中の類と継承のいくつか原理を模擬します.
オブジェクト指向の言語では、クラスを使ってカスタムオブジェクトを作成します.しかし、JavaScriptのすべてのものは対象です.どのような方法でカスタムオブジェクトを作成しますか?
これはもう一つの概念-プロトタイプを導入する必要があります.簡単にプロトタイプを一つのモデルとして見ることができます.新しく作成したユーザー定義の対象は全部このテンプレートのコピーです.
prototypeを通じてカスタムオブジェクトを作成する例を見てみましょう.
//
function Person(name, sex) {
this.name = name;
this.sex = sex;
}
// Person ,
Person.prototype = {
getName: function() {
return this.name;
},
getSex: function() {
return this.sex;
}
}
ここでは関数Personをコンストラクションと呼びます.つまり、目的別のオブジェクトを作成する関数です.JavaScriptは構造関数とプロトタイプによるシミュレーションでクラスの機能を実現していることが分かります.以下では一例を通して、カスタムオブジェクトを作成するjavascriptが行った具体的な仕事を具体的に説明します.
var zhang = new Person("ZhangSan", "man");
console.log(zhang.getName()); // "ZhangSan"
var chun = new Person("ChunHua", "woman");
console.log(chun.getName()); // "ChunHua"
コードvar zhang=new Person(「ZhangSan」、「man」)が実行されると、内部には以下のようなことがあります.空白のオブジェクト(new Object()を作成します.Person.prototypeの属性をコピーしてこの空のオブジェクトにします.このオブジェクトをthisキーワードでコンストラクタに伝達し,コンストラクタを実行した.このオブジェクトに変数zhangを割り当てます.すべての仕事が完了しました.prototypeテンプレートが実例化されたオブジェクトにコピーされているのではなく、リンクされていることを証明するために、下記のコードを参照してください.
function Person(name, sex) {
this.name = name;
this.sex = sex;
}
Person.prototype.age = 20;
var zhang = new Person("ZhangSan", "man");
console.log(zhang.age); // 20
// prototype age
zhang.age = 19;
console.log(zhang.age); // 19
delete zhang.age;
// age , prototype
console.log(zhang.age); // 20
上記の例では、彼がコピーしただけであれば、このageという属性を削除した後、このオブジェクトの中には存在しなくなりますが、例の中のage属性はまだ出力されますか?それとも以前の値を上書きしますか?親の中のage属性は、見えないリンクを通してオブジェクトに存在します.JavaScriptで簡単な継承はどうやって実現しますか?
以下の例は従業員タイプのEmployeeを作成します.Personからプロトタイプのすべての属性を継承しました.
function Employee(name, sex, employeeID) {
this.name = name;
this.sex = sex;
this.employeeID = employeeID;
}
// Employee Person
// Person Person , Employee Person 。
Employee.prototype = new Person();
Employee.prototype.getEmployeeID = function() {
return this.employeeID;
};
var zhang = new Employee("ZhangSan", "man", "1234");
console.log(zhang.getName()); // "ZhangSan
はい、以上はjavascriptの継承実現に関する具体的な過程と継承を実現する方法です.もちろんまとめてみます.javascriptにおける継承メカニズムは、あくまでもシミュレーションによるもので、対象に向けた言語の中には、明らかに粗く、いくつかの欠陥があります.しかし、全体としては、フロントエンドの開発者の熱意を低下させるものではありません.