2017-02-03 10 views
2

は、私がここにオブジェクトスプライスで返されたオブジェクトは、プロパティが未定義です。どうして?

var st = new Stone; 

var ll = [st]; 

var remov = ll.splice(0, 1); 

alert(remov.x); 

をインスタンスのは

function Stone() { 
     this.x = 0; 
     this.y = 400; 

    }; 

として定義を考えてみましょうremovは、リストからオブジェクトを削除しますが、すべてのプロパティはundefinedに設定されています。警告は "未定義"と警告します。これはなぜですか?

+0

あなたの警告は、 ''警告 – evolutionxbox

+2

[ 'Array.prototype.splice()']([0] .Xをremov)(https://developer.mozilla.org/する必要があります"_Return value:**削除された要素を含む配列。削除された要素が1つだけの場合、1つの要素の配列が返されます。** If要素が削除されない場合、空の配列が返されます._ " – Andreas

答えて

6

現在のアイテムにアクセスする必要があります。 Spliceはのの配列を返すことができ、1つの項目がある場合でも1つの項目を持つ配列が返されます。だからあなたはそのアイテムを入手し、そのアイテムにアクセスする必要があります。 spliceの詳細については、documentationをご覧ください。

removをログに記録し、その内容を確認できます。

function Stone() { 
 
    this.x = 0; 
 
    this.y = 400; 
 
}; 
 

 

 
var st = new Stone; 
 

 
var ll = [st]; 
 

 
var remov = ll.splice(0, 1); 
 
console.log(remov); 
 
alert(remov[0].x);

関連する問題