gpt4 book ai didi

javascript - "Dynamically bind"变量到另一个

转载 作者:行者123 更新时间:2023-11-30 11:37:15 26 4
gpt4 key购买 nike

我有这样的课

class A {
this.x
this.y
}

class B {
this.x = a.x
this.y = a.y
}

我希望 b.xa.x = 10 时为 10,当然,我可以做到

class B {
set x ( xValue ) {
a.x = xValue
}
}

但这不适用于 +=-= 或任何其他运算符

上下文
我有一个 GameObject 类,在这个类中,有一个 sprite 类,我希望通过设置 GameObject.xSprite.x = GameObject。 x。我可以在渲染函数中完成它(func render () => Sprite.x = GameObject.x => render())但这不实用。

我想继续“JS 设计模式”,所以你们知道如何将 b.x“绑定(bind)”到 a.x(例如 C 中的指针) ?

最佳答案

您可以通过称为 prototypal inheritance 的概念实现“实时链接” , JavaScript 对象构建于其上。事实上,这是 JavaScript 优于经典 OOP 语言的一大优点。

请记住,这种方法绑定(bind)的是 B 函数对象本身的原型(prototype),而不是 B 的各个实例。因此,B 的每个实例都将具有指向 a 的实时链接。然而,这些可以在每个单独的实例上被覆盖,因为 JavaScript 将在遍历原型(prototype)链之前查找属性时从调用对象开始。

function A () {
this.x = 0;
this.y = 0;
}

function B () {

}
var a = new A();
B.prototype = a;

var b = new B();

a.x += 5;
console.log(b.x);
a.x = 3;
console.log(b.x);

关于javascript - "Dynamically bind"变量到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com