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? 这是否意味着给对象方法一个名称,副本变成“深层副本”,而匿名函数只会进行“浅拷贝”?
由于
答案 0 :(得分:1)
函数也是对象。 Ninja创建了yell函数对象,稍后在代码中你会被Samurai引用。所以现在你有2个对同一个(函数)对象的引用。之后你“删除”Ninja(这是2名裁判中的一名),但你仍然在Samurai中有参考。