新見内部のJs
の記事は、新しい役割の内側jsの説明
https://zhuanlan.zhihu.com/p/23987456を
新しい、(Foo.prototype)オブジェクトのコピーテンプレートオブジェクト後コンストラクタ(すなわち、対応する機能が生成されるのFooテンプレートオブジェクト(Foo.prototype)と、新しいオブジェクト(B、C)を得、次いで、テンプレートオブジェクト(Foo.prototype)のを呼び出し新しいオブジェクトのfooが)変更されます
プロトタイプの言語を作成するための2つのステップがあります。
使用して、新しいオブジェクトを生成するための「テンプレート」として「プロトタイプオブジェクト」:このステップは必要であるが、これが生まれ、各オブジェクトへの唯一の道です。目的の「プロトタイプ」(プロトタイプ)で鋳型としてオブジェクトのプロトタイプを作成します。
内部属性初期化:この手順は必要ありません。「コピー」に、ある人気のポイントが満たされていない、我々は「再処理」が可能となり、「テンプレート」とは異なる得る「人格。」
プロトタイプチェーンをクリアするには、我々は最初のオブジェクトを把握しなければなりません
普通のオブジェクト:(例:AB)
最普通的对象:有__proto__属性(指向其原型链),没有prototype属性。
原型对象(Person.prototype 原型对象还有constructor属性(指向构造函数对象))
関数オブジェクト:(例はFoo())
凡是通过new Function()创建的都是函数对象。
拥有__proto__、prototype属性(指向原型对象)。
プロトタイプオブジェクト
の各機能用に作成されたプロトタイプの性質を持つことになり、このプロパティは、オブジェクト(プロトタイプオブジェクトのコンストラクタによって作成されたインスタンス・オブジェクト)へのポインタです。プロトタイプオブジェクトは、特定のタイプのプロパティとメソッドのすべてのインスタンスによって共有されます。利点は、それに含まれるオブジェクトのプロパティとメソッドのすべてのインスタンスを共有することができますオブジェクトのプロトタイプ。
プロトタイプオブジェクトは通常のオブジェクトに属します。Function.prototypeは例外で、それはオブジェクトの関数として、それは、プロトタイプの性質ではなく、オブジェクトのプロトタイプであるが、オブジェクトの関数です。
達成するために、プロトタイプチェーンを通じて継承されています
//old
function User(name,pass){
this.name = name;
this.pass = pass;
}
User.prototype.showName = function(){
alert(this.name)
}
//old 继承
function VIPUser(name,pass,level){
User.call(this,name,pass);
this.level = level;
}
VIPUser.prototype = new User();
//修正一下构造函数
VIPUser.prototype.constuctor = VIPUser;
//这样的话,先复制了User模板,然后利用VIPUer()进行修改,实现对象的实例化
VIPUser.prototype.shoewLevel = function(){
alert(this.level)
}
//new
class User2{
constructor(name,pass){
this.name = name;
this.pass = pass;
}
showName(){
alert(this.name)
}
}
class VIPUser2 extends User2{
constructor(name,pass,level){
super(name,pass)
this.level = level
}
shoewLevel(){
alert(this.level)
}
}