次のコードの出力は、Bike has 2 wheels
の代わりにundefined has undefined wheels
です。 Instantiated object
は、オブジェクトのprototype
に添付されていない関数を呼び出すことはできませんか? 'Function.prototype.call'を使用してオブジェクトのプロトタイプに添付されていない関数を呼び出す方法
0
A
答えて
4
残念ながら、あなたのコードについてのほとんどすべてが間違っています。
まず、「車両」機能this
のプロパティを設定する必要があり、それが代わりに定数の渡されたパラメータを使用する必要があります。
var vehicle = function(name, wheels) {
this.name = name,
this.wheels = wheels,
this.fuel = "petrol"
}
次に、あなたの関数「ドライブ」はまったくのパラメータを取るべきではありません:
function drive() {
console.log(this.name + " is driven with " + this.wheels + " wheels");
}
this
値として、あなたの車でdrive()
を呼び出すために:
var vehicle1 = new vehicle("Bike", 2);
drive.call(vehicle1);
.call()
の最初のパラメータは、呼び出された関数内のthis
の値として使用されます。
0
var vehicle = function(name, wheels){
\t name = "car",
\t wheels = 4,
\t fuel = "petrol"
}
function drive(name, wheels) {
\t console.log(this.name + " has " + this.wheels + " wheels");
}
var vehicle1 = new vehicle('Bike' , 2);
drive.call(vehicle1); //undefined is driven with undefined wheels
this
を使用する必要があります。
var vehicle = function(name, wheels){
\t this.name = "car",
\t this.wheels = 4,
\t this.fuel = "petrol"
}
function drive(name, wheels) {
\t console.log(this.name + " is driven with " + this.wheels + " wheels");
}
var vehicle1 = new vehicle('Bike' , 2);
drive.call(vehicle1); //undefined is driven with undefined wheels
3
いくつかの問題:
あなたはコンストラクタ関数として
vehicle
を使用しますが、this
に任意のプロパティを割り当てていません。あなたはあなたがそれを呼び出すときにそれらを供給
drive
にname
とwheels
パラメータの定義ではなく、それらを使用していないvehicle
に
name
かwheels
パラメータを使用していません。そうでもない問題、ちょうど大会(私はyour last question上で述べたように):あなたが
vehicle
とnew
を使用するつもりなら、それは最初にキャップをする必要があります。Vehicle
によって大会を圧倒。
のコメントを参照してください:あなたは `これを使用してこれらの変数を定義する必要があります` vehicle`関数内
var vehicle = function(name, wheels){
// Actually use name and wheels and put them on `this`
this.name = name;
this.wheels = wheels;
}; // <== Added missing ;
function drive(/* No parameters here*/) {
\t console.log(this.name + " is driven with " + this.wheels + " wheels");
}
var vehicle1 = new vehicle('Bike' , 2);
drive.call(vehicle1);
関連する問題
- 1. プロトタイプのない関数としてCアドレスを呼び出す
- 2. モックされたオブジェクトのモックされていない関数を呼び出す
- 3. プロトタイプ関数onclickイベント内でプロトタイプ関数を呼び出す方法
- 4. プロトタイプで宣言されている関数が呼び出されないのはなぜですか?
- 5. AJAXを使用してPHP関数を呼び出す方法
- 6. デフォルトを使用して関数を呼び出す方法
- 7. クリックイベント内でオブジェクト関数を呼び出すと、定義されていない
- 8. 定義されていない関数を呼び出すshmop_open()
- 9. 定義されていない関数を呼び出す
- 10. 定義されていない関数を呼び出す
- 11. 定義されていない関数を呼び出すsqlite_open
- 12. 定義されていない関数を呼び出すsession_register()
- 13. 定義されていない関数mysqli_query()を呼び出す
- 14. 定義されていない関数を呼び出すgd_info()
- 15. 関数呼び出しで "変数"として指定されている値を使用する方法
- 16. JavaScript:プロトタイプを継承してプロトタイプを使用せずにプロトタイプを使用してメソッドを定義/呼び出す
- 17. 別の関数を使用してオブジェクトのベクトルで関数を呼び出す
- 18. プロトタイプなしで他の関数のメソッドを呼び出す方法
- 19. 呼び出しモジュールを使用しない関数を使用
- 20. 呼び出された関数から(元の関数で)javascript関数を呼び出していますか?
- 21. リファレンスラムダ関数を使用して関数を呼び出す方法は?
- 22. オブジェクト型に基づいて関数を動的に呼び出す方法
- 23. kernel32.dll関数を呼び出す方法C++でLoadLibrary(..)を使用してGetTickCount()を呼び出す方法
- 24. React Jestその関数が呼び出されない方法
- 25. コンソールコマンドのHandle()関数が呼び出されていない
- 26. ScriptableObjectのOnEnable関数が呼び出されていない
- 27. Pythonマルチプロセッシングが関数呼び出しを呼び出さない
- 28. ポリモフィズム引数を使用して動的に関数を呼び出す方法
- 29. 関数のプロトタイプで定義された関数を呼び出せないのはなぜですか?
- 30. なぜプロトタイプで定義している間に関数を呼び出せないのですか?
.... '、たとえば:' this.name = "車"。 – Titus
あなたの車のコンストラクタは 'これを行う必要があります。変数をインスタンスにアタッチするには、「name = ...」を使用します。あなたは暗黙のグローバルを宣言しています。 – Li357
まだまだ私は、「車には4輪がある」 – Prem