У меня есть этот код:

var rect2 = new drawRect({
        h: 100,
        w: 100,
        x: 280,
        y: 20,
        colour: '8CB5CF',
        name: 'Office 2'
}

Можно ли прочитать свойства, которые я передаю в drawRect? Моя первая мысль была:

alert(rect2.h)

Но это приводит к undefined, я не ожидал, что это сработает, но я не знаю, как еще подойти к этому.

Я довольно новичок в JavaScript. Спасибо.

РЕДАКТИРОВАТЬ: Извините, вот drawRect:

    function drawRect(rectOptions){
        var ctx = document.getElementById('canvas').getContext('2d');
        ctx.fillStyle = rectOptions.colour;
        ctx.fillRect(rectOptions.x,rectOptions.y,rectOptions.h,rectOptions.w);
        ctx.font = '12px sans-serif';
        ctx.fillText(rectOptions.name, rectOptions.w + rectOptions.x, rectOptions.h     + rectOptions.y);
    }

Вот полный код: полный код

0
Corydon 22 Янв 2013 в 05:21

2 ответа

Лучший ответ

Внутри функции drawRect вы можете добавить строку для добавления свойства option к объектам, созданным drawRect.

function drawRect(rectOptions) {
  this.options  = rectOptions;
  //...
}

Тогда вы могли бы сделать

var rect2 = new drawRect({ /* ... */ });
alert(rect2.options.h);

В качестве альтернативы, вы могли бы drawRect вернуть параметры, переданные ему.

function drawRect(rectOptions) {
  //...
  return rectOptions;
}

Тогда вы могли бы сделать, как вы изначально пытались,

alert(rect2.h);
0
Peter Olson 22 Янв 2013 в 02:54
var rect2 = new drawRect({
        h: 100,
        w: 100,
        x: 280,
        y: 20,
        colour: '8CB5CF',
        name: 'Office 2'
})
 function drawRect(rectOptions){
        //your code
        return rectOptions;//you have to return the value 
    }

alert(rect2.h);//alerts 100

ссылка на jsfiddle

0
Arun Killu 22 Янв 2013 в 02:55