javascript 面向对象特性之继承
2016-06-23 14:45
676 查看
/**
* Created by zengxianwen on 2016/6/15.
*/
console.log('start
javascript oo');
//继承
/**
* 类式继承
* @constructor
*/
function SuperClass(){
this.superClass = true;
this.books =
[<
20a2d
/span>'javascript','html','css'];
}
SuperClass.prototype.getSuperValue = function ()
{
return this.superClass;
};
function SubClass()
{
this.subClass = false;
}
SubClass.prototype = new SuperClass();
SubClass.prototype.getSubClassValue = function ()
{
return this.subClass;
};
var instance = new SubClass();
console.log('instance.superClass--' + instance.getSuperValue());
console.log('instance.subClass--' + instance.getSubClassValue());
console.log(SubClass.prototype instanceof SuperClass);
console.log(instance instanceof SubClass);
console.log(instance instanceof SuperClass);
console.log('instance.books--'+instance.books);
instance.books.push('java')
var instance_0 = new SubClass();
console.log(instance_0.books);
/**
* 构造函数继承
* @param id
* @constructor
*/
function SuperClass_1(id)
{
this.books =
['javascript','html','css'];
this.id =
id;
}
SuperClass_1.prototype.showBooks = function ()
{
console.log(this.books);
}
function SubClass_1(id)
{
SuperClass_1.call(this,id);
}
var instance_1 = new SubClass_1(20);
console.log('insance_1.book--' + instance_1.books);
instance_1.books.push('Java');
console.log('insance_1.book--' + instance_1.books);
var instance_1_1 = new SubClass_1(10);
console.log('insance_1_1.book--' + instance_1_1.books);
/**
* 组合式继承,构造函数与类式继承融合
* @param name
* @constructor
*/
function SuperClass_2(name)
{
this.name =
name;
this.books =
['javascript','html','css'];
}
SuperClass_2.prototype.getName = function ()
{
return this.name;
};
function SubClass_2(name,time)
{
this.time =
time;
SuperClass_2.call(this,name);
}
SubClass_2.prototype = new SuperClass_2();
SubClass_2.prototype.getTime = function ()
{
return this.time;
};
console.log(SubClass_2 instanceof SuperClass_2);
var instance_2 = new SubClass_2('javascript',2014);
console.log(instance_2.books);
instance_2.books.push('java');
console.log(instance_2.books);
console.log(instance_2.getTime());
console.log(instance_2.getName());
var instance_2_1 = new SubClass_2('java',2012);
console.log(instance_2_1.books);
console.log(instance_2_1.getTime());
console.log(instance_2_1.getName());
console.log('end
javascript oo');
/**
* 原型式继承
* @param o
* @returns {F}
*/
function inheritObject(o)
{
function F()
{};
F.prototype =
o;
return new F();
}
/**
* 寄生组合式继承
* @param subClass
* @param superClass
*/
function inheritPrototype(subClass,superClass)
{
var p = inheritObject(superClass.prototype);
p.constructor =
subClass;
subClass.prototype = p;
}
function SuperClass_3(name)
{
this.name =
name;
this.colors =
['red','blue','green'];
}
SuperClass_3.prototype.getName = function ()
{
return this.name;
}
function SubClass_3(name,time)
{
SuperClass_3.call(this,name);
this.time =
time;
}
inheritPrototype(SubClass_3,SuperClass_3);
SubClass_3.prototype.getTime = function ()
{
return this.time;
}
var instance_3 = new SubClass_3('js
book',2022);
var instance_3_2 = new SubClass_3('Java',2015);
instance_3.colors.push('black');
console.log(instance_3.colors);
console.log(instance_3_2.colors);
console.log(instance_3.getName());
console.log(instance_3.getTime());
console.log(SubClass_3.prototype instanceof SuperClass_3)
* Created by zengxianwen on 2016/6/15.
*/
console.log('start
javascript oo');
//继承
/**
* 类式继承
* @constructor
*/
function SuperClass(){
this.superClass = true;
this.books =
[<
20a2d
/span>'javascript','html','css'];
}
SuperClass.prototype.getSuperValue = function ()
{
return this.superClass;
};
function SubClass()
{
this.subClass = false;
}
SubClass.prototype = new SuperClass();
SubClass.prototype.getSubClassValue = function ()
{
return this.subClass;
};
var instance = new SubClass();
console.log('instance.superClass--' + instance.getSuperValue());
console.log('instance.subClass--' + instance.getSubClassValue());
console.log(SubClass.prototype instanceof SuperClass);
console.log(instance instanceof SubClass);
console.log(instance instanceof SuperClass);
console.log('instance.books--'+instance.books);
instance.books.push('java')
var instance_0 = new SubClass();
console.log(instance_0.books);
/**
* 构造函数继承
* @param id
* @constructor
*/
function SuperClass_1(id)
{
this.books =
['javascript','html','css'];
this.id =
id;
}
SuperClass_1.prototype.showBooks = function ()
{
console.log(this.books);
}
function SubClass_1(id)
{
SuperClass_1.call(this,id);
}
var instance_1 = new SubClass_1(20);
console.log('insance_1.book--' + instance_1.books);
instance_1.books.push('Java');
console.log('insance_1.book--' + instance_1.books);
var instance_1_1 = new SubClass_1(10);
console.log('insance_1_1.book--' + instance_1_1.books);
/**
* 组合式继承,构造函数与类式继承融合
* @param name
* @constructor
*/
function SuperClass_2(name)
{
this.name =
name;
this.books =
['javascript','html','css'];
}
SuperClass_2.prototype.getName = function ()
{
return this.name;
};
function SubClass_2(name,time)
{
this.time =
time;
SuperClass_2.call(this,name);
}
SubClass_2.prototype = new SuperClass_2();
SubClass_2.prototype.getTime = function ()
{
return this.time;
};
console.log(SubClass_2 instanceof SuperClass_2);
var instance_2 = new SubClass_2('javascript',2014);
console.log(instance_2.books);
instance_2.books.push('java');
console.log(instance_2.books);
console.log(instance_2.getTime());
console.log(instance_2.getName());
var instance_2_1 = new SubClass_2('java',2012);
console.log(instance_2_1.books);
console.log(instance_2_1.getTime());
console.log(instance_2_1.getName());
console.log('end
javascript oo');
/**
* 原型式继承
* @param o
* @returns {F}
*/
function inheritObject(o)
{
function F()
{};
F.prototype =
o;
return new F();
}
/**
* 寄生组合式继承
* @param subClass
* @param superClass
*/
function inheritPrototype(subClass,superClass)
{
var p = inheritObject(superClass.prototype);
p.constructor =
subClass;
subClass.prototype = p;
}
function SuperClass_3(name)
{
this.name =
name;
this.colors =
['red','blue','green'];
}
SuperClass_3.prototype.getName = function ()
{
return this.name;
}
function SubClass_3(name,time)
{
SuperClass_3.call(this,name);
this.time =
time;
}
inheritPrototype(SubClass_3,SuperClass_3);
SubClass_3.prototype.getTime = function ()
{
return this.time;
}
var instance_3 = new SubClass_3('js
book',2022);
var instance_3_2 = new SubClass_3('Java',2015);
instance_3.colors.push('black');
console.log(instance_3.colors);
console.log(instance_3_2.colors);
console.log(instance_3.getName());
console.log(instance_3.getTime());
console.log(SubClass_3.prototype instanceof SuperClass_3)
相关文章推荐
- JavaScript对象操作之浅复制
- JavaScript对象表示方式
- js 综合基本知识题目测试
- Json简介
- 利用Canvas+js实现贪吃蛇(3)
- 再次谈论Javascript中的this
- Javascript页面之间参数传递 (前端)
- 五种 JSP页面跳转方法详解
- js滑动特效插件Swiper使用心得
- json传空值NSArray
- JS时间类扩展
- 43、JavaScript的运动----任意属性值的运动---透明度的改变
- js里边填充数据:点一次会闪一次的问题
- 使用Gson解析复杂的json数据
- javascript中this关键字的使用
- 42、JavaScript的运动----多个物体同时运动
- javascript 删除 url 中指定参数,并返回 url
- 文章标题
- 关于JavaScript的类的继承
- js 各种高度宽度汇总(为自己记忆)