Учитывая, что я использую класс Джона Ресига (найдено здесь: Class), есть ли способ для объекта javascript передать прокси переменные другому объекту?Есть ли способ прокси-переменных внутри объекта javascript?
Пример:
var Car = Class.extend({
init: function(mileage, color, type) {
this.mileage = mileage;
this.color = color;
this.type = carDatabase[type];
}
));
// This would be loaded in as a datasource, not sitting in global
// space like this.
var carDatabase = {
"Falcon": {
"year": 2013,
"engine": "Inline 8",
"company": "Ford"
},
"Commodore": {
"year": 2012,
"engine": "V8",
"company": "Holden"
},
// etc etc
};
// Using the Car class somewhere:
var myCar = new Car(10000, "blue", "Falcon");
console.log(myCar.color); // blue
console.log(myCar.type.year); // 2013
console.log(myCar.type.company); // Ford
Поэтому, учитывая, в приведенном выше примере, можно ли переслать прокси type
в сам класс автомобиля без дублирования содержимого type
.
В идеале я бы предпочел ввести myCar.company
, а не myCar.type.company
для согласованности Класса.
Я знаю, что подчеркивание и jQuery предлагают расширенные методы, но они, похоже, дублируют содержимое в исходный объект. Я также рассмотрел образец веса мухи (о котором я бы сказал, это слишком много, и я бы пришел к тому же самому, что и выше).
Ответ @ dc5 правильный, но он, вероятно, будет работать хуже, чем копирование данных, и меньше поддержки браузера. – FakeRainBrigand
Почему бы просто не использовать буфер? 'var car = myCar.type;' затем использовать car.year ... – technosaurus
@technosaurus Потому что автомобиль пропустит такие вещи, как цвет/пробег, которые являются особыми для одного экземпляра. Другие элементы разделены (например, двигатель и компания), но элементы/свойства, такие как пробег, относятся только к определенному автомобилю – Chris