ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用Object.create()实现继承

2019-09-22 11:00:33  阅读:339  来源: 互联网

标签:console log Parent 继承 create Object Child


使用Object.create()实现继承:https://www.cnblogs.com/cuew1987/p/4075027.html

 

 

一、常见继承方式

我们日常开发中常见的继承方式主要有: 1、默认模式:

1 Child.prototype = new Parent();

2、借用构造函数:

1 2 3 function Child(a, b, c, d) {     Parent.apply(this, arguments); }

3、借用和设置原型:

1 2 3 4 function Child(a, b, c, d) {     Parent.apply(this, arguments); } Child.prototype = new Parent();

4、共享原型:

1 Child.prototype = Parent.prototype;

5、使用临时构造函数:

1 2 3 var Proxy = function() {}; Proxy.prototype = Parent.prototype; Child.prototype = new Proxy();

6、extend属性复制:

1 2 3 4 5 6 7 8 9 10 11 function extend(parent, child) {     child = child || {};       for(var key in parent) {         if(parent.hasOwnProperty(key)) {             child[key] = parent[key];         }     }       return child; }

当然在一些javascript库中(jQuery),还存在浅复制和深复制。 7、原型继承模式:

1 Object.create(Parent);

二、Object.create实现继承

本文将来学习第七种继承方式Object.create()方法来实现继承,关于此方法的详细描述,请戳这里。下面来通过几个实例来学习该方法的使用:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var Parent = {     getName: function() {         return this.name;     } }   var child = Object.create(Parent, {     name: { value: "Benjamin"},     url : { value: "http://www.zuojj.com"} });   //Outputs: Object {name: "Benjamin", url: "http://www.zuojj.com", getName: function} console.log(child);   //Outputs: Benjamin console.log(child.getName());

我们再来看一个例子,再添加一个继承:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 var Parent = {     getName: function() {         return this.name;     },     getSex: function() {         return this.sex;     } }   var Child = Object.create(Parent, {     name: { value: "Benjamin"},     url : { value: "http://www.zuojj.com"} });   var SubChild = Object.create(Child, {     name: {value: "zuojj"},     sex : {value: "male"} })   //Outputs: http://wwww.zuojj.com console.log(SubChild.url);   //Outputs: zuojj console.log(SubChild.getName());   //Outputs: undefined console.log(Child.sex);   //Outputs: Benjamin console.log(Child.getName());

通过上面可以看出Object.create()方法实现了链式继承,及原型链的继承。如果在控制台打印出各个生成的对象,可以很清楚的看到。

1 2 3 4 //Outputs: true console.log(Child.isPrototypeOf(SubChild)); //Outputs: true console.log(Parent.isPrototypeOf(Child));

isPrototypeOf() 方法测试一个对象是否存在于另一个对象的原型链上。 以上就是本文对Object.create方法的描述,文中不妥之处,还望批评指正。

标签:console,log,Parent,继承,create,Object,Child
来源: https://www.cnblogs.com/bydzhangxiaowei/p/11566657.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有