JS中对象的特征:继承

Posted 爱吃鱼的猫#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中对象的特征:继承相关的知识,希望对你有一定的参考价值。

子类沿用父类的属性和方法来达到重用,并且子类可以扩展自己的属性和方法
2.1继承方法
2.1.1对象冒充法
优点:可以继承属性 缺点:不可以继承方法,检测类型可以发现子类不在父类中
强制继承 js 先定义子类对象,然后再对象中写 this.inherit = 父类对象名 this.inherit(参数一,参数二,参数三...) delete this inherit;

call/apple冒充法

js 先定义子类对象,然后再对象中写 父类对象名.apply(this,[参数1,参数2...]); 父类对象名.call(this,参数1,参数2..)
2.2原型链
优点:可以继承方法,检测类型可以发现子类在父类中 缺点:获取不到属性
子类名.prototype = new 父类对象名();
2.3混合方式
结合原型链和对象冒充法,既可以获取到属性,也可以继承方法,检测类型也可以发现子类在父类中
定义一个子类对象,对象中用对象冒充法继承到父类属性 然后用原型链继承到父类方法
看原型 子类对象名.prototype(只能找上一级) 子类对象名.proto(可以一直往上找)
示例:
//父类动物
function Animal(name,color,male) {
    this.name = name;
    this.color = color;
    this.male = male;
}
Animal.prototype.intro = function () {
    console.log("I am animal");
}
//子类猫
function Cat(name,color,male) {
    Animal.apply(this,["咪咪","黑白色","雄"]);
    //继承父类的属性
}
Cat.prototype = new Animal();
    //原型链继承父类的方法
Cat.prototype.itself = function () {
    console.log("I am cat,怕水,舌头有倒刺");
}
//子类自己的方法要写在继承父类方法的后面
let cat = new Cat();
console.log(cat.name,cat.color,cat.male);
cat.itself();
cat.intro();
//子类狗
function Dog(name,color,male) {
    Animal.apply(this,["汪汪","黑白色","雄"]);            
}
Dog.prototype = new Animal();
Dog.prototype.itself = function () {
    console.log("I am dog,不怕水,舌头没倒刺");
}
let dog = new Dog();
console.log(dog.name,dog.color,dog.male);
dog.itself();
dog.intro();
console.log(Dog.prototype);
console.log(Dog.prototype.prototype);
console.log(Cat.__proto__);
console.log(Cat.__proto__.__proto__);
console.log(Cat.__proto__.__proto__.__proto__);


//咪咪 黑白色 雄
  i am cat ,怕水,舌头有倒刺
  i am animal
  汪汪 黑白色 雄
  i am dog, 不怕水,舌头没倒刺
  i am animal
//看原型
    Animal {
      name: undefined,
      color: undefined,
      male: undefined,
      itself: [Function] }
    undefined
    [Function]//所有函数的__proto__都指向function
    {}//在往上就是空对象
    null//再往上就是null这是最上一级,不能在往上了

 

以上是关于JS中对象的特征:继承的主要内容,如果未能解决你的问题,请参考以下文章

JS高级---复习

Java面向对象三大特征之继承和多态

JS面向对象基础篇(封装 继承 多态)

C++作为面向对象语言的三个基本特征:封装,继承和————

JS之对象

面向对象三大特征之二:继承