質問
こちら、作成しました
- コンストラクターを使用する
Owner
オブジェクト - コンストラクターを使用する
Camera
オブジェクト
2番目の出力ステートメントでは、最初のステートメントとして表示されることを期待していましたが、未定義と表示されます。
これはおそらく、、 などのsummary()
ようにメソッドを書いた方法によるものです。this.owner
this.make
注:-最初の出力ステートメントは、コンストラクターの外部から変数値にアクセスします。しかし、2 番目の出力ステートメントでは、summary()
メソッドはコンストラクター自体の内部の変数にアクセスします。
make 変数 (引数ではない) をそのように使用するべきではありませんか? オブジェクトコンストラクター内でそれらを使用する方法は?
この概念を理解するのを手伝ってください。また、この概念を理解できる参考文献を提供してください。
テストの実行:コード スニペット @ CodeAcademy ワークスペース
コードスニペット
//camera object contructor
function Camera(model, make, year, owner)
{
this.make = make.toString();
this.model = model.toString();
this.year = parseInt(year);
this.owner = function(){
return (owner.fname + " " + owner.lname).toString();
}();
this.summary = function(){
return this.owner + " bought a " + this.make + " " + this.model + ", released in " + this.year + ".";
}();
}
//owner object contructor
function Owner(fname, lname){
this.fname = fname;
this.lname = lname;
}
//create owner
var niky = new Owner("Niky", "Bauxi");
//create camera for owner
var niky_cam = new Camera("DSLR D3100", "Nikon", 2009, niky);
console.log(niky_cam.owner + " bought a " + niky_cam.make + " " + niky_cam.model + ", released in " + niky_cam.year + ".");
console.log(niky_cam.summary);
出力
Niky Bauxi bought a Nikon DSLR D3100, released in 2009.
undefined bought a undefined undefined, released in undefined.
解決
さまざまな回答とコメントを検討した後、
解決策 1: CodeAcademy ワークスペース