を返しません。
- "コンストラクタオブジェクトをクエリしません"。実際のオブジェクトのプロパティは列挙できますが、コンストラクタ関数は列挙できません。
- コード例でプロパティを作成する方法では、オブジェクトの
prototype
を使用していないため、オブジェクトのプロトタイプを反復処理する場合は、radius
プロパティは表示されません。
あなたが本当に言うことを意味したものと仮定している:「私は私のサークルオブジェクトのインスタンスのプロパティを反復処理する方法を教えてください」、その答えは次のようになります:
function Circle()
{
this.radius = 3;
this.border = 1;
this.color = "red";
}
var obj = new Circle();
for (var i in obj) {
// hasOwnProperty makes sure we get properties only of Circle,
// not of ancestors like Object
if (obj.hasOwnProperty(i)) {
// i will be properties of obj on each iteration
console.log(i); // radius, border, color
}
}
のプロトタイプオブジェクトは別のものです。オブジェクトの新しいインスタンスがすべて自動的に継承する構造のように考えることができます。あなたはこのようにプロトタイプを使用することができます。
function Circle(r)
{
this.radius = r;
this.border = 1;
this.color = "red";
}
Circle.prototype.calcArea = function() {
return(Math.PI * this.radius * this.radius);
}
Circle.prototype.calcCircumference = function() {
return(Math.PI * this.radius * 2);
}
これは自動的にサークル、二つの方法石灰海綿綱とcalcCircumferenceのすべてのインスタンスを提供します。
var cir = new Circle(4);
console.log(cir.calcArea()); // 54.624
また、あなたはアレイなどのコードを持っていない既存のオブジェクト(あなたがこれを行う際に注意する必要がありますが)のプロトタイプにメソッドを追加することができます。例:
Array.prototype.isSorted = function() {
for (var i = 1; i < this.length; i++) {
if (this[i] < this[i-1]) {
return(false);
}
}
return(true);
}
var x = [1,3,6,8];
var y = [1,3,8,6];
console.log(x.isSorted()); // true
console.log(y.isSorted()); // false
これはプロトタイプではありません。 – SLaks