对象方法的Javascript范围
我想问一下,为什么忍者被删除后,仍然可以调用武士.yell? 这是否意味着通过给对象方法一个名称,副本将成为“深度副本”,而匿名函数将只执行“浅层副本”对象方法的Javascript范围,javascript,function,object,methods,anonymous,Javascript,Function,Object,Methods,Anonymous,我想问一下,为什么忍者被删除后,仍然可以调用武士.yell? 这是否意味着通过给对象方法一个名称,副本将成为“深度副本”,而匿名函数将只执行“浅层副本” 谢谢,函数也是对象。 当忍者创建yell函数对象时,稍后在代码中您将由武士引用它。现在您有了对同一(函数)对象的两个引用。后来你“删除”了忍者(这两位裁判之一),但你仍然持有武士的参考资料。似乎完全是同一个问题:教程显示删除对对象的参考并不会删除对象本身。正如切尔尼夫提到的,答案可以在这里找到是的,完全是,谢谢! var ninja = {
谢谢,函数也是对象。
当忍者创建yell函数对象时,稍后在代码中您将由武士引用它。现在您有了对同一(函数)对象的两个引用。后来你“删除”了忍者(这两位裁判之一),但你仍然持有武士的参考资料。似乎完全是同一个问题:
教程显示删除对对象的参考并不会删除对象本身。
正如切尔尼夫提到的,答案可以在这里找到是的,完全是,谢谢!
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." );