gpt4 book ai didi

javascript - 如何在 JavaScript 中为私有(private)变量使用与函数参数相同的名称? (让代码看起来更好)

转载 作者:行者123 更新时间:2023-11-28 15:21:07 24 4
gpt4 key购买 nike

我今天写了大约这段代码:

function  Point  ()  {                   //  1
var x, y; // 2
// 3
this.setXY = function (x, y) { // 4
x = x; // 5 doesn't work
y = y; // 6 doesn't work
} // 7
} // 8

我想让 setXY API 看起来不错,所以我想在第 4 行使用 xy。但是我也想要我的代码内部很好,所以我在第 2 行使用 xy 作为私有(private)变量。

我的问题是:对于私有(private)变量和函数参数,是否可以在我的代码中随处使用 xy ?如何在第 5 行和第 6 行将 x 分配给 x 并将 y 分配给 y 才能正常工作?

最佳答案

setXY中,函数参数xy遮蔽局部变量xyPoint 函数体中定义。

在 JavaScript 中,没有直接的方法来访问隐藏变量。通过声明参数名称来隐藏局部变量,您已经使局部变量变得不可访问。

通常,在这种情况下,JavaScript 开发人员不会尝试访问隐藏变量,而是会执行以下两种操作之一:

  1. 使用不同的变量名称:

    function Point() {
    var _x, _y;
    this.setXY = function(newX, newY) {
    _x = newX;
    _y = newY;
    };
    }
    p = new Point();
    p.setXY( 5, 7 );
  2. 将特定于对象的值存储在 this 中,而不是作为局部变量:

    function Point() {
    this.setXY = function(x, y) {
    this.x = x;
    this.y = y;
    };
    }
    p = new Point();
    p.setXY( 5, 7 );

这两种方法的主要区别在于

  1. 由于它们是局部变量,因此无法从 Point 定义外部访问 _x_y,因此它们可以' 除非通过setXY进行更新。

  2. 由于它们是对象成员,因此任何引用 this 的人都可以访问 this.xthis.y ,并且可以在 Point 定义之外进行修改,而无需使用 setXY。继续前面的代码:

    console.log( p.x, p.y ); // prints 5, 7
    p.x = 11;
    console.log( p.x, p.y ); // prints 11, 7

关于javascript - 如何在 JavaScript 中为私有(private)变量使用与函数参数相同的名称? (让代码看起来更好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364245/

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