Javascript创建具有动态属性的对象 你好 功能播放器(元素){ this.element=元素; this.left=element.style.left; } var player=newplayer(document.querySelector(“#player”); console.log(player.left);
我有上面的东西。如果我调用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
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)