詳細についてはコメントをよく読んでください。ナンセンスな話はやめて、コードに直接進みましょう。
// プロトタイプ属性: 3、共有
//これは特権属性として定義されます。すべてアクセス可能
//var はプライベート プロパティとして定義されます。
//動的に追加された属性はパブリック属性です。私有地に立ち入り禁止
//インスタンスオブジェクトが指すプロトタイプ属性はプロトタイプ属性です。私有地はアクセスできず、公共地よりも優先度が低くなります
//インスタンス属性は主にパブリック属性と特権属性で構成されます。どちらも外部プロパティとプロトタイプ プロパティによってアクセスできます。主な違いは、私有地にアクセスできるかどうかです
//------ここが分割線です---------------- ---
//パブリック プロパティ: 外部環境に公開されるオブジェクトのプロパティ。それはオブジェクトのプロパティでもあります。
// 静的属性: 動的に追加される属性。それはオブジェクトのプロパティでもあります。
// 共通プロパティ: コンストラクターによって生成されたすべてのインスタンスで共有されるプロパティ。
関数 User(){
// パブリック属性: 新しい User インスタンス オブジェクトにはそれぞれ属性があります。
// これはインスタンス属性であり、すべてのインスタンスの属性がメモリを共有するわけではありません。
// 外部からアクセス可能。
This.name='バイロンビス'
// 特権メソッド: すべての新しい User インスタンス オブジェクトにはメソッドがあります。
// これはインスタンス メソッドであり、すべてのインスタンス メソッドがメモリを共有するわけではありません。
// 外部からアクセス可能。
// アクセス可能なパブリック プロパティ。
// アクセス可能なプライベート プロパティ。
This.sayName=function(){
アラート(この名前);
アラート(この学校);
alert(age);//変数宣言は自動的に進められます。
アラート(this.sex);
// プライベート属性: 外部からはアクセスできません。
// これはコンストラクターにとってのみ意味があり、New の User インスタンス オブジェクトにとっては意味がありません。
var age=22;
// プライベートメソッド: 外部からアクセスできません。
// これはコンストラクターにとってのみ意味があり、New の User インスタンス オブジェクトにとっては意味がありません。
関数sayAge(){
アラート(年齢)
}
sayAge();
}
// 共通属性: 共有メモリ。
User.prototype.school='zky';
// パブリック メソッド: アクセス可能なパブリック プロパティ。
// 共有メモリ。
User.prototype.saySchool=function(){
アラート(この学校);
アラート(this.name);
アラート(this.sex);
アラート(年齢)
}
var obj=new User();
// 静的プロパティ: これらは動的に追加されるインスタンス プロパティです。
obj.sex='男';
// 静的メソッド: 動的に追加されるインスタンスメソッドです。
obj.saySex=function(){
アラート(this.sex);
アラート(この名前);
アラート(この学校);
アラート(年齢)
}
//------ここが分割線です---------------- ---
//// これは、このキーワードで定義されたプロパティと動的に追加されたプロパティが本質的に同じであり、インスタンス オブジェクトのパブリック プロパティと見なすことができることを証明しています。
// 検証: このキーワードで定義された属性は、動的に追加された属性
にアクセスします。
// obj.sayName();//true
// 検証: 動的に追加された属性は、このキーワードで定義された属性にアクセスします
// obj.saySex();//true
// 検証: パブリック プロパティがプライベート プロパティにアクセスする
// obj.sayName();//true
obj.saySex();//false
// 検証: 共有プロパティがプライベート プロパティにアクセスする
// obj.saySchool();///false
頭>
テスト文書
本文>