私は、このコードを関数で定義しました。 array
次に、次の行にプッシュします:
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
私はこれを試しました:
this.values = [].push(value);
そして
this.values = (this.values || []).push(value);
しかし、失敗しました。コードに何か問題がありますか.....
回答:
回答№1は2配列初期化構文がありません:
var x = [ 1, 2, 3 ];
あなたの場合、これは次のようになります:
this.values = [ value ];
詳細はこちら: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
コード:
var x = ([]).push("y");
配列を生成し、それに値をプッシュする必要があるように見えます。配列を作成しますが、配列は返されません x
、配列の新しい長さが返されます、すなわち 1
.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
push()メソッドは、配列の最後に1つ以上の要素を追加し、 配列の新しい長さを返します。 [強調鉱山]
回答№2については2
配列の値を取得するだけです。
function Spot(value) {
this.x = null;
this.y = null;
this.values = [value];
}
var point = new Spot("foo")
console.log(point);
回答№3の場合は1
配列を作成してプッシュする方法 value
それは正しいです。ただし、関数内で作成されるため、アクセスする必要があります this
何らかの方法で関数の外部にあるオブジェクト。
何も返さないため、コンストラクタとして呼び出すことができます。
var spot = new Spot()
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
var spot = new Spot();
コンストラクターとして呼び出したくない場合は、単に返すことができます this
オブジェクト。
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
return this;
}