jsのコンストラクター、インスタンスオブジェクト、およびプロトタイプオブジェクト間の関係

結論として:

家族と同じように、父親は祖父の息子、子供の父親、そして妻の夫です。プロトタイプオブジェクトも「複数のジョブ」です。
AがBnewから来ている場合、AをBのインスタンスと呼びます。Aの暗黙的なプロトタイプオブジェクトは、Bの明示的なプロトタイプオブジェクトと同等です。
以下は、次のコードと関係図を使用した簡単な説明です。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			function Mali(name, color) {
    
    
				this.name = name;
				this.color = color;
				this.eat = function(){
    
    
					alert('吃')
				}
			}
			Mali.prototype.jump = function() {
    
    
				alert('跳高高')
			}
			
			Object.prototype.run = function(){
    
    
				console.log('快跑')
			}
			
			var xh = new Mali("xh", 'red');
			var xl = new Mali("xl", 'green')

			console.log(xh)
			console.log(xl)
			xh.eat();
			xl.jump();
			xh.run();
			xh.hat();
		</script>
	</body>
</html>

関係図
関係図
2つのインスタンスオブジェクトxhとxlは、コンストラクターMaliに従って生成されるため、xhとxlの暗黙のプロトタイプオブジェクトは、Maliの表示プロトタイプオブジェクトと同じです。xh._ _プロト__全てMali.prototypeに等しいです。息子が父親の父親の祖父を呼んでいるように、彼らはすべて同じ人物であり、異なって呼ばれています。
また、Maliのプロトタイプオブジェクト(とりあえずCと呼びましょう)は新しいObjectオブジェクトであるため、このオブジェクト自体(Cオブジェクト)もインスタンスオブジェクトです。(新しいものはすべてインスタンスオブジェクトです)Cオブジェクトの暗黙のプロトタイプは、オブジェクトの表示されたプロトタイプオブジェクト(Dオブジェクト)と同等です。
デフォルトでは、Objectの暗黙的なオブジェクトはnullです。
xh.run(); Xiaohongは、自分でrunメソッドを持っていないため、runメソッドを呼び出したいので、プロトタイプオブジェクト(Cオブジェクト)を探しに行きましたが、Cオブジェクトがなかったので、検索を続け、Dオブジェクトを見つけ、Dを見つけました。オブジェクトにはこのメソッドがあるため、Xiaohongはrunメソッドを呼び出します。Xiao Hongxunが呼び出す必要のあるメソッドのプロセスでたどるルートは、プロトタイプチェーンと呼ばれます。

エラーがある場合は、お気軽に訂正してください。ご不明な点がございましたら、メッセージを残してご相談ください。

おすすめ

転載: blog.csdn.net/xiaozuo144/article/details/109862906