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中对象的特征:继承的主要内容,如果未能解决你的问题,请参考以下文章