【问题标题】:Is there a way to create an object property from within a method of the same object? [duplicate]有没有办法从同一对象的方法中创建对象属性? [复制]
【发布时间】:2019-03-02 01:56:05
【问题描述】:

假设我有一个对象life

var life = {
    name: "John Doe",
    age: 45
};

我在网页加载 5 秒后调用了一个方法 die

setTimeout(life.die, 5000);

var life = {
    name: "John Doe",
    age: 45,
    die: function() {
        //Die
    }   
};      

如何从方法die 中创建属性dead?就这么简单吗?

die: function() {
    this.dead = true;
}

还是这个?

die: function() {
    var this.dead = true;
}    

或者我需要使用其他东西吗?

【问题讨论】:

  • 为什么,@Jai 有效吗?
  • @Jai — 它会触及window.dead 而不是life.dead(除非正在运行严格模式,在这种情况下它会抛出异常)。
  • 你不能将life.die传递给setTimeout你定义life之前!请测试你的minimal reproducible examples
  • 这是一个例子,对此感到抱歉。
  • 为什么你不能使用 life.dead??

标签: javascript methods properties javascript-objects


【解决方案1】:

您可以在函数范围内使用变量名 life 并在内部分配属性 dead,它将自动分配给 life 对象。如果你使用这意味着它将分配给窗口对象。

     
    
     var life = {
            name: "John Doe",
            age: 45,
            die:  () => {
                life.dead = true;
                console.log(life)
            }
        };
        
        setTimeout(life.die, 5000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2016-06-27
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多