【问题标题】:Javascript-scope of object method [duplicate]对象方法的Javascript范围[重复]
【发布时间】:2013-06-05 20:35:36
【问题描述】:
var ninja = {
  yell: function yellaaa(n){
    return n > 0 ? yell(n-1) + "a" : "hiy";
  }
};

var samurai = { yell: ninja.yell };
var ninja = null;
assert( samurai.yell(4) == "hiyaaaa", "The method correctly calls itself." );

我想问一下,为什么在ninja.null被删除后仍然可以调用samurai.yell? 这是否意味着给对象方法一个名字,副本就变成了“深拷贝”,而匿名函数只会进行“浅拷贝”?

谢谢

【问题讨论】:

标签: javascript function object methods anonymous


【解决方案1】:

函数也是对象。 当 Ninja 创建yell 函数对象时,稍后在代码中您将由 Samurai 引用它。所以现在你有 2 个对同一个(函数)对象的引用。稍后您“删除”了 Ninja(这是这 2 位裁判之一),但您仍然在 Samurai 中拥有参考。

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2016-07-11
    • 2012-10-15
    • 1970-01-01
    • 2019-05-01
    • 2022-07-06
    • 2017-03-26
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多