JavaScript学习笔记(5)---继承

来源:互联网 发布:图像去雾算法 编辑:程序博客网 时间:2024/05/22 02:12

//创建类的工厂
function createClass(json){

 //声明了一个对象、函数
 function F(){
  
 }

 for(var i in json){
  F.prototype[i]=json[i];
 }
 //把json的全部key、value值赋给F

 return F;
}//这个方法就是对继承的封装

//调用createClass方法,传进接送格式参数
var Person = createClass({
 setName:function(name){
  this.name=name;
 },
 setSex:function(sex){
  this.sex=sex;
 },
 getName:function(){
  return this.name;
 },
 getSex:function(){
  return this.sex;
 }
});

var p =new Person();
p.setName("aaa");
p.setSex("girl");
alert(p.getName());
alert(p.getSex());

 

function extend(json,prop){
 function F(){
 
 }
 //传递进来的json是一个对象的时候经过该if语句
 if(typeof json=="object"){
  //把json对象里面所有的内容复制给F函数
  for(var i in json){
   F.prototype[i]=json[i];
  }
 }
 //第二次调用extend函数的时候执行该if语句
 if(typeof json=="function"){
  //相当于继承了json
  F.prototype = json.prototype;
  //把prop里面的内容动态的赋值给F的prototype
  for(var j in prop){
   F.prototype[j]=prop[j];
  }
 }
 return F;
}

//第一次调用extend函数的时候传递了一个参数,而这个时候的json是一个json格式的对象
var Person=extend({
 a:1,
 b:2
});
//第二次调用extend函数的时候传递了两个参数,而这个时候的json是一个function
var SupPerson = extend(Person,{
 c:3,
 d:4
});

var sp = new SupPerson();
alert(sp.a);
alert(sp.b);
alert(sp.c);
alert(sp.d)

0 0