Javascript 面向对象,继承和多态

 //Function 是 js中一个对象,表示方法的,前面的是参数,最后一个是处理逻辑
   var fun = new Function("name", "age", "alert('你的名字是   ' + name  + '  你的年龄是'  + age)");
   //调用函数
   fun("zxc",15);
   //弹出整个函数的定义,是一个匿名的函数
   //alert(fun.toString());
   //求函数的参数个数
   //alert("该函数的参数为" + fun.length + "个");
   
   
   //利用内部函数访问私有变量,返回的一个函数的引用,注意不要加()
   //简单闭包的使用,闭包是不会释放内存的,慎用!
   function test() {
  var a = "zxc";
  function inner(){
  alert(a);
  }
  return inner;
   }
   
   //然后执行该函数
   var result = test();
   result();
   
   //创建对象之一  :json对象
   var json = {
"name":"i am zxc",
getName:function(){
return "heihei!";
}
   }
   alert(json.name);

   alert(json.getName());



   //创建对象之二 new 关键字
   function Dog(name, age) {
  this.name = name;
  this.age = age;
  this.getName = function() {
  alert(name);
  };
  this.getAge = function() {
  alert(age);
  };
   };
   
   var dog = new Dog("我是周星驰","不过我22岁啊");
   dog.getName();
   dog.getAge();
   
   
   function Cat() {
  this.catName = "对象属性定义一";
  Cat.prototype.catName2 = "对象属性定义之二";
  var catAge = "私有属性";
  
  var prifun = function() {
  alert("私有方法");
  }
  this.pufun = function() {
  alert("公有方法1");
  }
  Cat.prototype.pufun2 = function() {
  alert("公有方法2");
  }
   }
   
   Cat.cc = "类属性,类似于Java的静态数据";
   Cat.zz = function() {
  alert("类方法");
   }
   alert(Cat.cc);
   var cat = new Cat();
   alert(cat.catName + cat.catName2);
   
   Cat.zz();
   cat.pufun();

   cat.pufun2();


  //实现继承
   //父类
   function Animal(name, age) {
  this.name = name;
  this.age = age;
  this.getName = function() {
  alert(name);
  };
  this.getAge = function(){
  alert(age);
  };
  this.parent = function() {
  alert("父类方法啊");
  };
   }
   
   //继承方式一,本质上还是Dog,适用于有参
   function Dog(name, age) {
  //本身和参数列表
  Animal.apply(this, [name, age]);
  this.mymethod = function() {
 alert("我是狗啊");
  };
   }
   
   
   //继承方式二,本质上变为Animal,适用于无参
   function Cat(name, age) {
 this.mymethod = function() {
 alert("我是猫啊");
 };
   }
   
   Cat.prototype = new Animal();
   Cat.prototype.name = "zxc";
   Cat.prototype.age = 18;
   
   var dog = new Dog("狗啊","12");
   dog.getName();
   dog.getAge();
   dog.mymethod();
   
  
   var cat = new Cat("猫啊","14");
   cat.parent();


 //实现多态
   function Animal() {
  this.method = function() {
  alert("动物方法哦");
  }
   }
   
   function Dog() {
  this.method = function() {
  alert("狗方法哦");
  }
   }
   
   function Cat() {
  this.method = function() {
  alert("猫方法哦");
  }
   }
   
   //继承
   Cat.prototype = new Animal();
   Dog.prototype = new Animal();
   
   function test(animal) {
  if(animal instanceof Animal) {
  animal.method();
  }
   }


   test(new Animal());
   test(new Dog());
   test(new Cat());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值