码迷,mamicode.com
首页 > Web开发 > 详细

JS中对象的特征:继承

时间:2018-06-10 22:59:38      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:ons   强制   获取   优点   undefined   console   type   参数   就是   

子类沿用父类的属性和方法来达到重用,并且子类可以扩展自己的属性和方法
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中对象的特征:继承

标签:ons   强制   获取   优点   undefined   console   type   参数   就是   

原文地址:https://www.cnblogs.com/cj-18/p/9164612.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!