秒懂JavaScript的原型对象与原型链

2022-12-15 0 266

对后辈而言,JavaScript的蓝本是两个很让人郁闷的事,二来prototype难与__proto__混为一谈,二来它间的各式各样对准毕竟很多繁杂,只不过市售早已有十分多的该文在试著说确切,有两张简而言之很经典之作的图,下面画了各式各样轮廓,一会儿相连那个一会儿相连那个,虽说我他们喔就十分呼吸困难,更称不上全然认知了。因此我他们也想试著呵呵,看一看能无法把蓝本中的关键习题分拆出,用最单纯的图象方式说确切。

秒懂JavaScript的原型对象与原型链秒懂JavaScript的蓝本第一类与蓝本链

他们晓得蓝本是两个第一类,其它第一类能透过它同时实现特性承继。但多吉除prototype,又有两个__proto__是用以干甚么的?长因此像,让人是不是界定呢?它都对准谁,因此纷乱是不是记啊?蓝本链又是甚么鬼?坚信许多新手即使有很大实战经验的丘壳都不很大能全然说确切,下面用两张单纯的图,相互配合许多实例标识符来认知呵呵。

秒懂JavaScript的原型对象与原型链

var obj = {};console.log(obj.prototype); //undefinedconsole.log(obj.__proto__); //Object {}var obj2 = function(){}console.log(obj2.prototype); //obj2 {}console.log(obj2.__proto__); //function() {}

秒懂JavaScript的原型对象与原型链

/*1、字面量方式*/var a = {};console.log(a.__proto__); //Object {}console.log(a.__proto__ === a.constructor.prototype); //true/*2、构造器方式*/var A = function(){};var a = new A();console.log(a.__proto__); //A {}console.log(a.__proto__ === a.constructor.prototype); //true/*3、Object.create()方式*/var a1 = {a:1}var a2 = Object.create(a1);console.log(a2.__proto__); //Object {a: 1}console.log(a.__proto__ === a.constructor.prototype); //false(此处即为图1中的例外情况)

秒懂JavaScript的原型对象与原型链

var A = function(){};var a = new A();console.log(a.__proto__); //A {}(即构造器function A 的蓝本第一类)console.log(a.__proto__.__proto__); //Object {}(即构造器function Object 的蓝本第一类)console.log(a.__proto__.__proto__.__proto__); //null

本文发布于程序思维:http://www.lucklnk.com/godaddy/details/aid/150268326

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务