个人理解:
第一种方法:MyObject.prototype.method1是作为函数名称的,它应当是局部的。
第二种方法:MyObject.prototype.method1是给MyObject对象添加了一个method1方法,全局适用

解决方案 »

  1.   

    function SuperClass(prop)
    {
        this.prop = prop;
    }function SuperClass.prototype.Write()
    {
        alert('SuperClass: ' + this.prop);
    }function SubClass(prop)
    {
        this.prop = prop;
    }SubClass.prototype = new SuperClass('initialization');// 改写 Write()
    SubClass.prototype.Write = function () {
        alert('SubClass: ' + this.prop);
    }/* 不能改写 Write()
    function SubClass.prototype.Write()
    {
         document.write('SuperClass: ' + this.prop);
    }
    */obj1 = new SuperClass('This is SuperClass.');
    obj2 = new SubClass('This is SubClass.');
    obj1.Write();
    obj2.Write();
    大家看看上面的例子,这不应该是局部与全局的问题吧,到底是为什么呢?
      

  2.   

    不好意思,写错了
    应该是:/* 不能改写 Write()
    function SubClass.prototype.Write()
    {
         alert('SubClass: ' + this.prop);
    }
    */
      

  3.   

    我记得在javascript根本就不能用第一种方法写.
    可能在有的浏览器中可以,但这个是不正确的写法.
      

  4.   

    第一种是定义了一个同名函数覆盖了对象的原形,可能IE在解析这种函数时会自动把它安装到对象上去,这种在FF上不支持
    第二种是直接定义对象的原形函数为一个匿名函数,这种在IE和FF上都支持