プロトタイプを使用して前の例のクラスを再定義すると、次の形式になります:
function ClassA() {
}
ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
alert(this.color);
};
関数 ClassB() {
}
ClassB.prototype = new ClassA();
プロトタイプ アプローチの魔法は、コードの最後の行にあります。ここでは、ClassB のプロトタイプ プロパティを ClassA のインスタンスに設定します。これは興味深いものです。ClassA のすべてのプロパティとメソッドが必要ですが、それらを ClassB のプロトタイプ プロパティに 1 つずつ追加したくないからです。 ClassA のインスタンスをプロトタイプ プロパティに割り当てるより良い方法はありますか?
注: パラメータを渡さずに ClassA のコンストラクターを呼び出します。これはプロトタイプチェーンにおける標準的な慣行です。コンストラクターにパラメーターがないことを確認してください。
オブジェクトの偽装と同様に、サブクラスのすべてのプロパティとメソッドは、プロトタイプ プロパティが割り当てられた後に表示される必要があります。これは、プロトタイプ プロパティが割り当てられる前に割り当てられたすべてのメソッドが削除されるためです。なぜ?プロトタイプのプロパティが新しいオブジェクトに置き換えられるため、新しいメソッドが追加された元のオブジェクトは破棄されます。したがって、name 属性と SayName() メソッドを ClassB クラスに追加するコードは次のとおりです。
function ClassB() {
}
ClassB.prototype = new ClassA();
ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
alert(this.name);
};
はい次の例を実行して、このコードをテストします。
var objA = new ClassA();
var objB = new ClassB();
objA.color = "青";
objB.color = "赤";
objB.name = " John";
objA.sayColor();
objB.sayColor();
objB.sayName();
さらに、プロトタイプ チェーンでは、instanceof 演算子動作も非常にユニークです。 instanceof は、ClassB のすべてのインスタンスについて、ClassA と ClassB の両方に対して true を返します。例:
var objB = new ClassB( );
alert(objBinstanceofClassA); //出力 "true"
alert(objBinstanceofClassB); //出力 "true"
ECMAScript の弱い型付けの世界, これは非常に便利なツールですが、オブジェクトの偽装を使用する場合は使用できません。ただし、サブクラスのプロトタイプが直接再割り当てされるため、次の状況が発生します:
console.log(objB.__proto__===objB.constructor.prototype) //false
ClassB のプロトタイプ チェーンのプロトタイプ属性がオブジェクトによってオーバーライドされたため別のクラスの。出力結果は、objB.__proto__ が objB.constructor.prototype ではなく ClassB.prototype を指していることを示しています。これも分かりやすいですが、オブジェクトリテラルの new ClassA() インスタンスに代入されるのが、オブジェクトリテラルのメソッドで定義されたオブジェクトのコンストラクター(constructor)が、ルートコンストラクターの Object.prototype を指します。空のオブジェクト {}、{} は当然ながら ClassB.prototype とは異なります。

作用域链和原型链是JavaScript中两个重要的概念,分别对应着作用域和继承两个核心特性:1、作用域链是JavaScript中用来管理变量访问和作用域的机制,其形成是由函数创建时所处的执行上下文环境和词法作用域决定的;2、原型链是JavaScript中实现继承的机制,基于对象之间的原型关系,当访问对象的属性或方法时,如果该对象本身没有定义,会沿着原型链向上查找。

原型,js中的一个对象,用于定义其他对象的属性和方法,每个构造函数都有一个prototype属性,这个属性是一个指针,指向一个原型对象,当创建新对象时,这个新对象会从其构造函数的prototype属性继承属性和方法。原型链,当试图访问一个对象的属性时,js会首先检查这个对象是否有这个属性,如果没有,那么js会转向这个对象的原型,如果原型对象也没有这个属性,会继续查找原型的原型。

原型和原型链的区别是:1、原型是每个对象都具有的属性,包含了一些共享的属性和方法,用于实现对象之间的属性和方法的共享和继承,而原型链是一种通过对象之间的原型关系来实现继承的机制,定义了对象之间的继承关系,使得对象可以共享原型对象的属性和方法;2、原型的作用是定义对象的共享属性和方法,使得多个对象可以共享同一个原型对象的属性和方法,而原型链的作用是实现对象之间的继承关系等等。

js原型和原型链的作用是实现对象的继承,节省内存空间,并提高代码的性能和可维护性。详细介绍:1、实现对象的继承,原型和原型链允许创建一个对象,并使其继承另一个对象的属性和方法,当创建一个新的对象时,可以将其原型指向另一个对象,这样新对象就可以访问到原型对象上的属性和方法;2、节省内存和提高性能,在JavaScript中,每个对象都有一个原型,通过原型链,对象可以共享原型上等等。

js原型和原型链是:1、原型,所有的函数默认都有一个“prototype”这样公有且不可枚举的属性,它会指向另一个对象,这个对象就是原型。2、原型链,当访问对象的属性或方法时,首先对象会从自身去找,找不到就会往原型中去找,也就是它构造函数的“prototype”中,如果原型中找不到,即构造函数中也没有该属性,就会往原型后面的原型上去找,这样就形成了链式的结构,称为原型链。

原型链是JavaScript中的重要概念,它是理解对象继承和属性查找机制的关键。在JavaScript中,每一个对象都有一个原型对象,而原型对象又是一个对象。通过原型链,我们可以实现继承并共享属性和方法。原型链的机制是通过对象之间的链接来实现的。每个对象都有一个隐藏的__proto__属性,指向它的原型对象。而原型对象又可以有自己的原型对象,依此类推,形成一

原型的特点是:1、原型是一个普通的对象,它可以拥有属性和方法,就像任何其他对象一样;2、在创建对象时,会自动关联一个原型。当我们创建一个新对象时,JavaScript将自动为该对象分配一个原型,并将其与对象相关联;3、对象可以通过原型链访问原型的属性和方法;原型链的特点是:1、每个对象都有一个原型,当访问一个对象的属性时,如果该对象本身没有该属性,则会在原型对象中查找等等。

原型和原型链的独特之处探究在JavaScript中,原型(prototype)和原型链(prototypechain)是非常重要的概念。理解原型和原型链的独特之处可以帮助我们更好地理解JavaScript中的继承和对象创建。原型是JavaScript中每个对象都拥有的一个属性,它指向一个其他对象,用于共享属性和方法。每个JavaScript对象都有一个原型


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
