gpt4 book ai didi

javascript - 自引用对象在 JavaScript 函数中如何工作?

转载 作者:行者123 更新时间:2023-11-28 12:40:18 25 4
gpt4 key购买 nike

我正在尝试设置一个 javascript 对象,其中一个项目是一个函数。我正在做一些 self 引用,但它不起作用。

var onTimePoints = function($a, $b, $c, $lifeotr){

$var1 = ($b - $a) / $c;
$var2 = ($lifeotr - $a) / $var1;
if($var2>$c)
{
$var2 = $c;
}
if($var2<0)
{
$var2 = 0;
}
$var2 = Math.round($var2);
return $var2;
}
var lifeData ={
min: 25000,
max: 65000,
otr: 56426,
maxPoints:100,
otp: onTimePoints(25000, 65000, 100, 56426),
test: function(){
alert(this.min);
}
}

当我执行 conosle.log(lifeData.otp) 时,它起作用了。

当我用 this.minthis.max 等替换硬编码数字时......它不起作用。

以下是无效的示例:

var lifeData ={
min: 25000,
max: 65000,
otr: 56426,
maxPoints:100,
otp: onTimePoints(this.min, this.max, this.maxPoints, this.otr),
test: function(){
alert(this.min);
}
}

在本例中,console.log(lifeData.otp) 返回 NaN

我确信我只是忽略了一些事情。如果您知道这个问题,我们将不胜感激。

最佳答案

您将获得很多教程来理解这一点,但在这里我尝试使用几行代码来说明它。在 Firebug 控制台或 Chrome 控制台中执行以下操作

  1. 输入并按 Enter

    > 窗口//现在是全局范围

  2. 运行以下代码

    this.a = 500;
    this.b = 600;
  3. 现在运行以下代码;

    var MyObject = {
    a: 20,
    b: 40,
    sum: this.a + this.b,
    getSum: function(){
    return this.a + this.b;
    }
    }
  4. 现在运行以下命令

       MyObject.sum

    > 1100//因为 MyObect 是在全局范围内和表达式 sum:this.a+this.b 中声明的 this 是 Window 对象。所以总和:400 + 500

  5. 现在运行

       MyObject.getSum();

    > 60//因为 getSumMyObject 的方法。当像 getSum 内的 MyObject.getSum() 那样调用时,this 将是 MyObject。所以它返回20 + 40

关于javascript - 自引用对象在 JavaScript 函数中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846023/

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