#javascript #javascript-framework
#javascript #javascript-framework
Вопрос:
У меня есть объект, подобный этому:
myobj={
//where to define Car car=new Car();
test:{
testFunc1(){car.paintTest();},
testFunc2(){car.drawTest();}
},
use:{
useFunc1(){car.paintUse();},
useFunc2(){car.drawUse();}
},
};
Я буду использовать myobj
таким образом, чтобы в другом js-файле я мог легко вызывать
myobj.test.testFunc2();
или
myobj.use.useFunc1();
Как вы заметили, в myobj
у меня есть car
экземпляр, который часто используется в разных функциях в разных подобъектах (например, в подобъектах «test», «use»).
Мне интересно, где я могу определить Car car=new Car();
в myobj
, чтобы car
определялась один раз и могла использоваться в нескольких функциях в myobj
.
Ответ №1:
вы можете сделать это следующим образом:
myobj={
car: new Car(),
test: {
var self = this;
testFunc1(){self.car.paintTest();},
testFunc2(){self.car.drawTest();}
},
use: {
var self = this;
useFunc1(){self.car.paintUse();},
useFunc2(){self.car.drawUse();}
},
};
Обновить
рабочая версия с поддельным Car
объектом:
function Car (){
this.paintTest = function(){console.log('painttest')}
this.drawTest = function(){console.log('drawtest')}
this.paintUse = function(){console.log('paintuse')}
this.drawUse = function(){console.log('drawuse')}
}
myobj = {
car: new Car(),
test:{
testFunc1: function() {myobj.car.paintTest();},
testFunc2: function() {myobj.car.drawTest();}
},
use: {
useFunc1: function(){myobj.car.paintUse();},
useFunc2: function(){myobj.car.drawUse();}
},
};
myobj.test.testFunc1();
myobj.test.testFunc2();
myobj.use.useFunc1();
myobj.use.useFunc2();
Комментарии:
1. @Mellon я только что попробовал ваш исходный код в jsfiddle, и он даже не работает … он мог бы работать с
this
. я просто много использую self в своем коде