posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> Prototype </TITLE>


          <SCRIPT LANGUAGE="JavaScript">
          //此函數來至于prototype,由于此代碼只是簡單的演示,所以就直接把其提取出來了.
          Object.extend = function(destination, source) {
            for (var property in source) {
              destination[property] = source[property];
            }
            return destination;
          }

          function Student(major){
           this.major=major;
          }


          Object.extend(Student.prototype, {
            sayHello: function(){
             alert("Hello world!");
            }
           }
          )

          /**======================================
          我比較奇怪的是上面的函數調用下面這段替換怎么就不行
          function People(){ 
           sayHello= function(){
            alert("Hello world!");
           }
          }
          var people= new People();
          var stu=new Student("manage");
          Object.extend(stu,people);

          =========================================**/

           


          var stu=new Student("manage");


          /**=================================
          通過這種方式雖然student繼承了pepole的屬性,但通過instanceof,最后的屬性并不是people
          ==================================**/
          stu.sayHello();


          for (var property in stu) {   
           alert(property);
          }


          </SCRIPT>

           


          </HEAD>

          <BODY>
          本代碼最初發表于 http://blog.openj.cn

          </BODY>
          </HTML>


          評論

          # re: JavaScript的OOP初體驗(通過對象復制來實現)  回復  更多評論   

          2007-04-06 16:37 by liuganquan
          function People(){
          sayHello= function(){
          alert("Hello world!");
          }
          }
          添加方法定義出錯了吧
          function People(){

          }
          People.prototype.sayHello= function(){
          alert("Hello world!");
          };

          Object.extend(Student.prototype,People.prototype);
          就可以了

          # re: JavaScript的OOP初體驗(通過對象復制來實現)  回復  更多評論   

          2007-04-06 21:14 by itspy
          樓上說的確實可以,但不知道為什么一定要

          Object.extend(Student.prototype,People.prototype);

          下面兩種為什么不行?
          Object.extend(Student.prototype,People);
          Object.extend(Student,People);

          # re: JavaScript的OOP初體驗(通過對象復制來實現)  回復  更多評論   

          2007-04-06 21:17 by TiGERTiAN
          js里面類擴充方法最基本都是用prototype 啊。。。怎么會爭大呢?

          # re: JavaScript的OOP初體驗(通過對象復制來實現)  回復  更多評論   

          2007-04-17 09:00 by 周小鋤
          其實是可以的,改一下People的構造函數:
          People = function(){
          this.sayHello=function(){
          alert('hello world');
          } ;
          };

          var people=new People();
          var stud=new Student('manage');
          Object.extend(stud,people);
          stud.sayHello();//alert:hello world

          # re: JavaScript的OOP初體驗(通過對象復制來實現)  回復  更多評論   

          2007-09-04 11:44 by stevenhong
          function People(){
          sayHello= function(){
          alert("Hello world!");
          }
          }
          問題是這個就不是一個對象。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 商南县| 清镇市| 砀山县| 旬阳县| 新兴县| 顺昌县| 武定县| 云南省| 宜兰县| 五原县| 泰和县| 阿拉善右旗| 莱阳市| 普洱| 青州市| 长沙县| 富顺县| 崇信县| 德惠市| 衡阳县| 辰溪县| 灵川县| 丽江市| 万宁市| 泰宁县| 黄梅县| 淅川县| 云和县| 志丹县| 双峰县| 江源县| 称多县| 博白县| 静乐县| 疏勒县| 乐陵市| 屯门区| 德阳市| 延边| 兴山县| 唐山市|