1、我现在只知道 prototype可以往一个已经存在的对象(包括内置对象)里面添加
   属性和方法,如:对象名.prototype.属性名 = "RED",但我对这个语法表达不理解
2、但书上又说 prototype是任何对象都有的一个属性,这么说,prototype本身就是
   一个对象的属性,那怎么又可以用一个属性来生成另一个属性?它和普通的属性好像
   很不一样。
3、又有资料说,通过prototype可以实现继承,child.prototype = new parent();
   我也不太清楚,我刚才试了一下,没有成功。总之,我对prototype概念不清,烦劳各位大哥多多指教!谢谢!

解决方案 »

  1.   

    这里就是一个例子http://expert.csdn.net/Expert/TopicView1.asp?id=1235241
      

  2.   

    1、我现在只知道 prototype可以往一个已经存在的对象(包括内置对象)里面添加属性和方法,如:对象名.prototype.属性名 = "RED",<script>
    function newObject(){
    }
    newObject.prototype.color="red";
    var obj=new newObject();
    alert(obj.color)
    </script>2、但书上又说 prototype是任何对象都有的一个属性,这么说,prototype本身就是一个对象的属性,那怎么又可以用一个属性来生成另一个属性?它和普通的属性好像很不一样。这里所指的对象是JScript 内部对象、自定义对象等,而不是DOM中的对象3、又有资料说,通过prototype可以实现继承,child.prototype = new parent(); 我也不太清楚,我刚才试了一下,没有成功。<script>
    //构建一个自定义对象newObject
    function newObject(){
    this.color="red";
    }
    //构建一个自定义对象anotherObject
    function anotherObject(){
    }
    //anotherObject继承newObject对象
    anotherObject.prototype = new newObject()
    //建立一个anotherObject对象实例
    var obj=new anotherObject();
    //color属性是继承来的
    alert(obj.color)
    </script>
      

  3.   

    for examples<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY><script>
    String.prototype.alert=function() {alert(this);}
    'yyc'.alert();
    </script>
    </BODY>
    </HTML>
      

  4.   

    prototype只是向对象中添加属性的一种方法,不用它直接写也可以的。
      

  5.   

    prototype属性就是返回对象的引用,而不是对象本身,那么就可以给对象的引用添加属性和方法
      

  6.   

    C++和java中有类的继承问题,比如有个基类CClass,那么在C++中可以继承CClass类,用class SubClass::CClass的语法,在SubClass中添加新的方法和属性,同时CClass类不会被变化(封装)。在js中,没有类的概念(也没有继承),作为一种面向对象的脚本,用prototype属性能够完成继承的任务,如果在js中建立对象CClass,用prototype添加的属性和方法,相当于在CClass的映射中添加了属性和方法,
    用CClass创建新的对象SubClass的时候,SubClass就有的新添加的属性和方法了
      

  7.   

    runmin:写不写prototype是完全不同的:String.test=new Function("alert('test')");
    String.test();
    "a".test(); //在这里出错如果这样呢:
    String.prototype.test=new Function("alert('test')");
    "a".test()
    String.test();  //在这里出错要是深究原因恐怕又要引起js是否支持类的争论,还是算了吧。
      

  8.   

    你可以把protoType理解为函数的内联