Javascript范围的对象方法

时间:2013-06-10 08:22:20

标签: javascript function object methods anonymous

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? 这是否意味着给对象方法一个名称,副本变成“深层副本”,而匿名函数只会进行“浅拷贝”?

由于

1 个答案:

答案 0 :(得分:1)

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