Javascript创建具有动态属性的对象 你好 功能播放器(元素){ this.element=元素; this.left=element.style.left; } var player=newplayer(document.querySelector(“#player”); console.log(player.left);

Javascript创建具有动态属性的对象 你好 功能播放器(元素){ this.element=元素; this.left=element.style.left; } var player=newplayer(document.querySelector(“#player”); console.log(player.left);,javascript,Javascript,我有上面的东西。如果我调用console.log(player.left)。它返回我30px。然后我更改了left属性(在dev工具中)。我仍然得到30px。问题是,它是否有一种方法可以使Player类的left属性在我更改元素的left时动态地更改值,或者我必须指定值:Player.left=document.querySelector(“#Player”).style.left,您可以这样做: <body> <div id="player" styl

我有上面的东西。如果我调用console.log(player.left)。它返回我
30px
。然后我更改了left属性(在dev工具中)。我仍然得到
30px
。问题是,它是否有一种方法可以使Player类的
left属性在我更改元素的left时动态地更改值,或者我必须指定值:
Player.left=document.querySelector(“#Player”).style.left
,您可以这样做:

    <body>
        <div id="player" style="position: absolute; left: 30px;">Hello</div>
        <script>
            function Player (element) {
                this.element = element;
                this.left = element.style.left;
            }

            var player = new Player(document.querySelector('#player'));
            console.log(player.left);
        </script>
    </body>


*在第一次删除答案时误读了您的问题

查看JavaScriptyes中的DefineProperty和Getter是的,这可能是将Property更改为method的一种方式。但是关于left still be属性呢?您可以使用
\uu defineGetter\uuu
但它只是IE11+。()罗伊·纳米尔。你说得对。一些浏览器支持它。我仍然需要一些随意的引导者和引导者,他们最终只是方法。没有必要隐瞒事实。如果你不想“丑化”Player-ctor函数,你可以将getter方法添加到原型中。。。
  function Player(element)
  {
      this.element = element;
      this.left = function ()
      {
          return this.element.style.left
      };
  }

  var player = new Player(document.querySelector('#player'));
  console.log(player.left()); //30px

  setTimeout(function () //test
  {
     document.querySelector('#player').style.left='100px'
      console.log(player.left()); //100px
  }, 2000)