前几天看到js的对象和继承的两种实现总结了一下然后在这里记录下来:

 1<html> 
 2<head>
 3<script language="javascript" type="text/javascript">
 4function BaseClass(name)
 5{
 6    this.TypeName = name;
 7    this.writeBaseName = function()
 8    {
 9       document.write("Base Name: ");
10       document.write(this.TypeName);
11       document.write("<br />");
12    }

13}

14
15function DeriveClass(name)
16{
17    var base = new BaseClass("Cat");
18    base.Name = name;
19    base.writeDeriveName = function()
20    {
21        document.write("Derived Name: ");
22        document.write(base.Name);
23    }

24    return base;
25}

26
27var base = new DeriveClass("tom");
28base.writeBaseName();
29base.writeDeriveName();
30</script>
31</head> 
32<body>
33</body> 
34</html>
35
     这种就是相当于平常的组合,因为js本身并不支持继承和接口,所以这种组合的实现是比较通用的方法。另外就是调用call 方法:示例如下:
 1<html>
 2<head>
 3    <script language="javascript">        
 4        function ClassA(prop)
 5        {
 6            this.prop = prop;
 7            this.fun2 = function()
 8            {
 9              document.writeln(this.prop);
10             document.writeln("ok in class A"); 
11             document.writeln("<br />");
12            }

13        }
 
14                        
15        var a = new ClassA("a");
16        a.fun2();    
17        
18        function ClassB(prop,name)
19        {
20            ClassA.call(this,prop);
21            this.name = name;
22            this.fun2 = function()
23            {
24              document.writeln(this.prop);
25              alert("ok in class B"); 
26              document.writeln("<br />");
27            }

28        }

29        var b = new ClassB("B","b");
30        b.fun2();   
31    </script>
32</head>
33</html>
34
posted on 2007-11-22 11:11  叶飞  阅读(240)  评论(0编辑  收藏  举报