浅析JS原型继承与类的继承
程序员文章站
2023-11-17 15:51:58
我们先看js类的继承
我们先看js类的继承
<!doctype html> <html> <head> <meta charset="utf-8"> <title>js类的继承</title> </head> <body> /* -- 类式继承 -- */ <script type="text/javascript"> //先声明一个超类 var animal = function(name) { this.name = name; } //给这个超类的原型对象上添加方法 animal.prototype.eat = function() { console.log(this.name + " eat"); }; //实例化这个超 var a = new animal("animal"); //再创建构造函数对象类 var cat = function(name, sex) { //这个类中要调用超类animal的构造函数,并将参数name传给它 animal.call(this, name); this.sex = sex; } //这个子类的原型对象等于超类的实例 cat.prototype = new animal(); //因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数 console.log(cat.prototype.constructor); //这个是animal超类的引用,所以要从新赋值为自己本身 cat.prototype.constructor = cat; console.log(cat.prototype.constructor); //子类本身添加了getsex 方法 cat.prototype.getsex = function() { return this.sex; } //实例化这个子类 var _m = new cat('cat', 'male'); //自身的方法 console.log(_m.getsex()); //male //继承超类的方法 console.log(_m.eat()); //cat </script> </body> </html>
我们再看js原型继承
<!doctype html> <html> <head> <meta charset="utf-8"> <title>js原型继承</title> </head> <body> <!--原型继承--> <script type="text/javascript"> //clone()函数用来创建新的类person对象 var clone = function(obj) { var _f = function() {}; //这句是原型式继承最核心的地方,函数的原型对象为对象字面量 _f.prototype = obj; return new _f; } //先声明一个对象字面量 var animal = { somthing: 'apple', eat: function() { console.log("eat " + this.somthing); } } //不需要定义一个person的子类,只要执行一次克隆即可 var cat = clone(animal); //可以直接获得person提供的默认值,也可以添加或者修改属性和方法 console.log(cat.eat()); cat.somthing = 'orange'; console.log(cat.eat()); //声明子类,执行一次克隆即可 var someone = clone(cat); </script> </body> </html>
我们可以试验一下,js类的继承 children.constructor==father 返回的是true,而原型继承children.constructor==father 返回的是false;
以上这篇浅析js原型继承与类的继承就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
下一篇: VR电影难拍 因为导演不知道该站哪儿