如何定义一个可以被我的对象中的所有函数访问的变量?

发布于 2024-11-01 18:17:49 字数 714 浏览 2 评论 0原文

我有一个像这样的对象:

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 “子对象)。

我想知道,我在哪里可以在 myobj 中定义 Car car=new Car(); ,以便 car 被定义一次< /strong> 并可用于 myobj 中的多个函数。

I have a object like this:

myobj={
  //where to define Car car=new Car();
  test:{
    testFunc1(){car.paintTest();},
    testFunc2(){car.drawTest();}
  },

  use:{
    useFunc1(){car.paintUse();},
    useFunc2(){car.drawUse();}
  },
};

I will use myobj in the way that, in another js file, I can easily call

myobj.test.testFunc2();

or

myobj.use.useFunc1();

As you notice, in myobj, I have a car instance frequently be used in different functions in different sub-objects (e.g. "test", "use" sub-objects).

I am wondering, where can I define Car car=new Car(); in myobj so that the car is defined once and can be used in several functions in myobj.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

時窥 2024-11-08 18:17:49

你可以这样做:

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();

fiddle:http://jsfiddle.net/maniator/KcQvL/

you can do that like this:

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();}
  },
};

UPDATE

working version with fake Car object:

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();

fiddle: http://jsfiddle.net/maniator/KcQvL/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文