以下の2つの宣言の違いは何ですか?
var vehiclePrototype = function{
function init(carModel) {
this.model = carModel;
}
};
と
var vehiclePrototype = {
init: function (carModel) {
this.model = carModel;
}
};
以下の2つの宣言の違いは何ですか?
var vehiclePrototype = function{
function init(carModel) {
this.model = carModel;
}
};
と
var vehiclePrototype = {
init: function (carModel) {
this.model = carModel;
}
};
最初init()
は、外部関数内でのみ使用できます。 vehiclePrototype.init()
動作しません。
2 番目では、オブジェクトを作成し、関数をinit
プロパティに割り当てます。 vehiclePrototype.init()
動作します。
また、最初の例には構文エラーがあります。var vehiclePrototype = function () {
最初の行に使用する必要があります。
まずトップが壊れているので、素朴にトップが壊れていて、ボトムは関数を含むオブジェクトリテラルです。
init は関数にスコープが設定されており、外部にエスケープする方法がないため、正しい構文を想定しても、最初のものはまだ何もしません。違いは、関数を含むオブジェクト リテラルとは異なる空の関数です。
おそらくあなたはこれを望んでいました:
var vehiclePrototype = function () {
this.init = function (carModel) {
this.model = carModel;
};
};