<script type="text/javascript">
function Foo() {};
var foo = new Foo();
foo.prototype.label = "我的标签";
alert(foo.label);
  </script>
我不知哪一步错了?

解决方案 »

  1.   

        function Foo() {};
        var foo = new Foo();
        Foo.prototype.label = "我的标签"; //是Foo,不是foo
        alert(foo.label);
      

  2.   

    foo的话就只能
        foo.label = "我的标签";
      

  3.   

    谢谢,能说说道理吗?
    foo就是一个对象。
    Foo也是一个对象呀。如果将Foo理解成类,我就能白,但是这两个都是对象呀。
    本质区别何在呢?
    javascript中没有类呀。
    但是在这里 Foo 明显与 foo 是不一样的东西,区别在何处呢?
    从称谓上,这两者有什么不同呢?
      

  4.   

    foo是实例对象,FOO是对象模板
      

  5.   

    一个模板能产生很多的实例对象,如果你修改了模板的属性,自然产生的实例对象也跟着改变了,如果你改变了实例对象属性,自然只能影响到被改变的实例,而不会影响到模板对象;同样,JS中一般情况下是不能通过实例对象改变原型的属性的,这也是出于封装和安全考虑。
    当然有的浏览器,比如FF,可以通过实例的__proto属性引用到原型对象从而更改属性,但是一般不推荐这样改!