美文网首页
javaScript中的面向对象思想之继承

javaScript中的面向对象思想之继承

作者: 开韦 | 来源:发表于2017-04-21 13:10 被阅读0次

三、继承
1、继承是面向对象(OO)语言中的一个概念,许多面向对象语言都支持两种继承方式:接口继承和实现
继承。而ECMAScript中只支持实现继承,而且其现实继承主要依靠原型链来实现的。

2、调用call和apply函数来实现继承
<script type="text/javascript">
//函数的调用方法:既可以使用函数名+小括号的形式调用也可以使用函数名+call()的形式调用
function hello(a,b,c){
console.log(this);
console.log(a);
console.log(b);
console.log(c);
}
//hello();
//hello.call ();
//两种调用方式的区别:
// 小括号调用:如果向小括号中传参数,则该参数一定是函数所需的参数
//call()调用:如果向call的小括号中传参, 则参数一定是一个对象,call会把所调函数中的this指针指
到该参数上;
var per={
name:'xiaoXuan',
age:24
}
hello(per,'12',34);
hello.call(per,per,'12',34);
hello.apply(per,[per,'12',34]);
</script>

3、原型实现继承
<script type="text/javascript">
function CreateAnimal(name,age){
this.name=name;
this.age=age;
}
function CreatePerson(name,age,gender){
this.gender=gender;
}
CreatePerson.prototype=new CreateAnimal('zhangsan',100);
CreatePerson.prototype.constructor=CreatePerson;
var per=new CreatePerson('zhangsan',100,'man');
console.log(per);
</script>

4、组合继承
<script type="text/javascript">
// 使用call/apply实现对实例属性的继承
// 使用原型实现对原型方法的继承
function CreateAnimal(name, age) {
this.name = name;
this.age = age;
}
CreateAnimal.prototype.sayHi = function () {
alert('hello');
}
function CreatePerson(name, age, gender) {
CreateAnimal.call(this, name, age);
this.gender = gender;
}
CreatePerson.prototype = new CreateAnimal();
CreatePerson.prototype.constructor = CreatePerson;
CreatePerson.prototype.eatFood = function () {
alert('吃饭了');
}
var per = new CreatePerson('xiaoQuan', 18, 'man');
// console.log(per.gender);
per.eatFood();
</script>

5、冒充继承
<script type="text/javascript">
function CreateAnimal(name, age) {
this.name = name;
this.age = age;
}
CreateAnimal.prototype.sayHi = function () {
alert('hello');
}
function CreatePerson(name, age, gender) {
// 1、让父级构造函数作为自己对象的方法
this.newFn = CreateAnimal;
// 2、使用this调用该方法:需要让方法中的指针指向per对象
this.newFn(name, age);
// 3、把临时添加的方法删掉
delete this.newFn;
this.gender = gender;
}
var per = new CreatePerson('xiaoQuan', 18, 'man');
console.log(per);
per.sayHi();
</script>

相关文章

  • Web前端经典面试试题及答案2

    javascript面向对象中继承实现? 面向对象的基本特征有:封闭、继承、多态。在JavaScript中实现继承...

  • javaScript中的面向对象思想之继承

    三、继承1、继承是面向对象(OO)语言中的一个概念,许多面向对象语言都支持两种继承方式:接口继承和实现继承。而EC...

  • JavaScript 中的继承

    摘要:继承是面向对象思想中的重要概念,虽然严格来说 JavaScript 并属于面向对象类型的语言,但最终还是在E...

  • 继承

    继承是什么? 在面向对象的思想中,广义的继承是子对象拥有父对象的一切方法与属性。而JavaScript有着更特殊的...

  • java基础-day10-面向对象4.0

    面向对象4.0 1. 面向对象之继承 1.1 生活中的继承 1.2 Java中的继承 1.3 子类对象创建,会调...

  • 笔记:JavaScript继承

    本文摘录及参考自:1. Javascript继承机制的设计思想2. Javascript 面向对象编程(一):封装...

  • JS-Object 对象原型

    通过原型这种机制,JavaScript中的对象从其他对象继承功能特性,这种继承机制与经典的面向对象编程语言的继承机...

  • JavaScript 面向对象之 继承

    继承的概念 通过一个类(父类、父构造函数)创建出另一个类(子类、子构造函数),这样创建出来的类不仅拥有原有类的属...

  • 深入理解JavaScript之原型与原型链

    JavaScript是一门面向对象的语言,继承是面向对象的一大特性,但是严格来讲JavaScript中却没有通常含...

  • JavaScript 面向对象编程

    JavaScript 快速入门 面向对象编程创建对象构造函数忘记写new怎么办?原型继承class继承 面向对象编...

网友评论

      本文标题:javaScript中的面向对象思想之继承

      本文链接:https://www.haomeiwen.com/subject/inddzttx.html