解决方案 »

  1.   


    我没明白
    alert((object.getName = object.getName)());

    object.getName = object.getName;
    alert(object.getName());
    区别在哪儿?产生这种区别的原因是什么?尽管我知道结果确实不一样...
      

  2.   

    何必写的这么复杂。这样不行吗?
    a = object.getName;
    alert(a());
      

  3.   

    这个不能太详细,详细就如老道在js语言精粹里边说的,这是一个js 设计bug,跟作用域什么的可能关系不大。然后如何避免这个bug高程上讲了,如果现在你还是看不懂,那可能缺少对js语言全局宏观概念的掌握,建议看看js语言精粹,虽然那书不太适合新手看,但你就只看this这块。然后实战其它代码吧,回头等建立或习惯于js的各种其芭,或建立那种全局观之后,再来看这个问题,或许豁然开朗。
      

  4.   

    你这样调用,把函数赋值给了全局的变量a,所以a()是在全局环境里执行的,我大概能明白。
    但是这一句:(object.getName = object.getName)()为什么this指向的是window而不是object呢?
      

  5.   


    你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...
      

  6.   


    你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...
    目前可以这么粗糙的理解,但是理解为bug的话,里边也有沉淀多年的js历史问题,后面了解其它js全局概念后,在回来了解。
      

  7.   


    呃...我怎么感觉语气不太对,,,不管怎样,弄明白了请告诉我,万分感谢!
    JavaScript 高级程序设计 第三版,P182~183...
      

  8.   


    你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...
    目前可以这么粗糙的理解,但是理解为bug的话,里边也有沉淀多年的js历史问题,后面了解其它js全局概念后,在回来了解。
    你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...
    目前可以这么粗糙的理解,但是理解为bug的话,里边也有沉淀多年的js历史问题,后面了解其它js全局概念后,在回来了解。
    我已经拿到js语言精粹了,翻了一篇没找到关于this的内容在哪,可以告知我一下具体位置吗?要不我就得从头开始看这本书了..谢谢!
      

  9.   


    你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...
    目前可以这么粗糙的理解,但是理解为bug的话,里边也有沉淀多年的js历史问题,后面了解其它js全局概念后,在回来了解。
    你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...
    目前可以这么粗糙的理解,但是理解为bug的话,里边也有沉淀多年的js历史问题,后面了解其它js全局概念后,在回来了解。
    我已经拿到js语言精粹了,翻了一篇没找到关于this的内容在哪,可以告知我一下具体位置吗?要不我就得从头开始看这本书了..谢谢!28页左下角。
      

  10.   

    增加一些杂质会不会好点。
    (1,2,object.getName)();
    (1,2,object.getName = object.getName)();神奇的js,反正我应该好像懂了。
      

  11.   

    js语言精粹函数那一章我应该都看懂了,也明白方法调用模式和函数调用模式的区别,也明白老道所说的bug是什么含义。
    只是不明白为什么  (object.getName = object.getName)()  这样调用属于   函数调用模式?
    这难道不应该是把 object.getName所指向(引用)的内存里的一段函数代码 赋值给 object.getName 吗?我感觉调用赋值后的 object.getName 应该属于方法调用模式呀?  不明白,,求解释....