ホームページ  >  記事  >  ウェブフロントエンド  >  jsインスタンス属性とプロトタイプ属性の詳しい解説 example_javascriptスキル

jsインスタンス属性とプロトタイプ属性の詳しい解説 example_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:30:371215ブラウズ

詳細についてはコメントをよく読んでください。ナンセンスな話はやめて、コードに直接進みましょう。

コードをコピー コードは次のとおりです:



<メタ文字セット="UTF-8"> テストドキュメント
<スクリプトタイプ="text/javascript"> //本質的に、属性とメソッドは同じです。メソッドは属性が参照型である関数です。
//オブジェクトには 4 つの属性があります:
// 1、このキーワード
を通じてコン​​ストラクターによって定義された属性 // 2、var キーワード
を通じてコン​​ストラクターによって定義された属性 // 3. コンストラクターのプロトタイプ オブジェクトに追加されたプロパティ
// //インスタンスのパブリック属性: 1 this キーワードで定義された属性 アクセス可能 1、2、3、4
//インスタンスのプライベート属性: var キーワードを通じて定義された 2 つの属性。アクセシブル 2
// インスタンスの共有属性: 3 インスタンスが指すプロトタイプを通じて追加された属性。アクセシブル 1、3、4
//インスタンスの静的プロパティ: オブジェクトに動的に追加される 4 つのプロパティ。アクセシブル 1,3,4

//概要:
// インスタンス属性: 1、パブリック
// 2、プライベート // 4、静的

// プロトタイプ属性: 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




テスト文書


それを明確に理解し、インスタンスの属性とプロトタイプの属性を理解していますか?この記事は非常に詳しく書かれているので、友達に役立つことを願っています

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。