タグ付けされた質問 「prototype-programming」

4
JavaScript:Class.methodとClass.prototype.method
次の2つの宣言の違いは何ですか? Class.method = function () { /* code */ } Class.prototype.method = function () { /* code using this.values */ } 最初のステートメントを静的メソッドの宣言と考え、2番目のステートメントをインスタンスメソッドの宣言と考えても問題ありませんか?


5
原型継承が古典よりも優れている点は?
それで、私はついにこれらの年の間ずっと足を引きずることをやめて、JavaScriptを「適切に」学ぶことを決めました。言語設計の最も頭を悩ます要素の1つは、継承の実装です。Rubyの経験があったので、クロージャーと動的型付けを見て本当に幸せでした。しかし、私の人生では、継承のために他のインスタンスを使用するオブジェクトインスタンスからどのようなメリットが得られるかを理解できません。


3
プロトタイプベースとクラスベースの継承
JavaScriptでは、すべてのオブジェクトが同時にインスタンスとクラスになります。継承を行うには、任意のオブジェクトインスタンスをプロトタイプとして使用できます。 Python、C ++などでは、別々の概念としてクラスとインスタンスがあります。継承を行うには、基本クラスを使用して新しいクラスを作成する必要があります。新しいクラスを使用して、派生インスタンスを生成できます。 JavaScriptがこの方向に進んだのはなぜですか(プロトタイプベースのオブジェクト指向)?従来のクラスベースのオブジェクト指向オブジェクトに対するプロトタイプベースのオブジェクト指向オブジェクトの利点(および欠点)は何ですか?

15
配列のプロパティ値を合計するより良い方法
私はこのようなものを持っています: $scope.traveler = [ { description: 'Senior', Amount: 50}, { description: 'Senior', Amount: 50}, { description: 'Adult', Amount: 75}, { description: 'Child', Amount: 35}, { description: 'Infant', Amount: 25 }, ]; この配列の合計量を取得するには、次のようにします。 $scope.totalAmount = function(){ var total = 0; for (var i = 0; i < $scope.traveler.length; i++) { total …

8
__proto__はconstructor.prototypeとどのように異なりますか?
function Gadget(name, color) { this.name = name; this.color = color; } Gadget.prototype.rating = 3 var newtoy = new Gadget("webcam", "black") newtoy.constructor.prototype.constructor.prototype.constructor.prototype 常に評価= 3のオブジェクトを返します。 しかし、私が次のことをした場合: newtoy.__proto__.__proto__.__proto__ チェーンが戻ってくるnull。 また、Internet Explorerでは、__proto__プロパティがない場合にnullをどのようにチェックしますか?

3
Javascriptの継承:スーパーコンストラクターを呼び出すか、プロトタイプチェーンを使用しますか?
ごく最近、MDCでのJavaScript呼び出しの使用法について読みました https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call 以下に示す例の1つのリンク、私はまだ理解していません。 なぜ彼らはここでこのように継承を使用しているのですか Prod_dept.prototype = new Product(); これは必要ですか?でスーパーコンストラクターへの呼び出しがあるため Prod_dept() とにかく、このように Product.call これは一般的な動作から外れているだけですか?スーパーコンストラクターの呼び出しを使用するか、プロトタイプチェーンを使用する方がよいのはいつですか? function Product(name, value){ this.name = name; if(value >= 1000) this.value = 999; else this.value = value; } function Prod_dept(name, value, dept){ this.dept = dept; Product.call(this, name, value); } Prod_dept.prototype = new Product(); // since 5 is less …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.