问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是作用域链,什么是原型链,它们的区别,在js中它们具体指什么

发布网友 发布时间:2022-05-14 10:44

我来回答

3个回答

懂视网 时间:2022-05-14 15:05

原型链是一种机制,指的是JavaScript每个对象包括原型对象都有一个内置的[[proto]]属性指向创建它的函数对象的原型对象,即prototype属性。

作用:原型链的存在,主要是为了实现对象的继承。

关于原型链的几个概念:

1、函数对象

在JavaScript中,函数即对象。

2、原型对象

当定义一个函数对象的时候,会包含一个预定义的属性,叫prototype,这就属性称之为原型对象。

//函数对象
function F(){};
console.log(F.prototype)

6a.jpg

3、__proto__

JavaScript在创建对象的时候,都会有一个[[proto]]的内置属性,用于指向创建它的函数对象的prototype。原型对象也有[[proto]]属性。因此在不断的指向中,形成了原型链。

举个例子来说,我们将对象F的原型对象修改一下,就可以清楚看到上述的关系

//函数对象
function F(){};
F.prototype = {
 hello : function(){}
};
var f = new F();
console.log(f.__proto__)

6b.jpg

4、new

当使用new去调用构造函数时,相当于执行了

var o = {};
o.__proto__ = F.prototype;
F.call(o);

因此,在原型链的实现上,new起到了很关键的作用。

5、constructor

原型对象prototype上都有个预定义的constructor属性,用来引用它的函数对象。这是一种循环引用。

function F(){};
F.prototype.constructor === F;

在实际运用中,经常会有下列的写法

function F(){};
F.prototype = {
 constructor : F,
 doSomething : function(){}
}

这里要加constructor是因为重写了原型对象,constructor属性就消失了,需要自己手动补上。

6、原型链的内存结构

function F(){
 this.name = 'zhang';
};
var f1 = new F();
var f2 = new F();

热心网友 时间:2022-05-14 12:13

对于 javaScript 只有两种作用域,全局作用域和 function 作用,如果一个 function 里还有function, 那么这个 function 又是一块作用域,对于他的得上一层 function 是有一个引用指向这个快作用,那么这样的一层一层的链式引用关系就是作用域链,而原型链主要与prototype、__proto__有关,保存着对象的继承关系。

热心网友 时间:2022-05-14 13:31

可以看一下《JavaScript权威指南》和《JavaScript语言精髓与编程实践》都有详细的讲解。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
做青红椒炒毛肚有哪些好吃的诀窍? 如何自制好吃的香辣毛肚? 穿越火线警告码SX(2,509,0)如何解决 CF sx警告码(2,770,0)什么原因 ...要求重新启动电脑 警告码是2 xxxx 0 有时重启4 5次才能玩 win7系统... 穿越火线 sx 警告码 2,994,0 怎么解决 CF出现非法模块SX警告码(2,990,0) 我为什么上CF体验服没开G有非法模块???怎么办啊 警告码(2,502,0) 穿越火线进游戏后 2分钟左右 就出来个 SX 警告码2,990,0 看到刘老师那慈祥的面庞,我感慨万分,我想到了这样几个赞美刘老师的成语... 谁有初中英语教师资格证的资料吗 考初中英语教师资格证的教材需要什么书 企业怎么注销 女生想要的是什么? 女人想要的是什么,在乎的什么?不懂女人心 2019年青岛科技大学考研分数线 女人最需要的是什么?? 女人想要的是什么呢? 哈尔滨科技大学研究生分数线 鞍山科大研究生录取分数线 中科大固体物理学科考研分数线 单位收到工伤保险如何入账 人力资源公司收到工伤保险公司的赔付款怎么入账 个人工伤保险理赔怎么入账好 工伤赔款怎么做账 发生的职工工伤费用如何入账 怎么查询自己社保卡余额 方巾如何折叠三角巾 遂宁市创新工业园管理委员会遂工管发【2021】22号文件是什么内容_百度问一问 江西教育局规定是否晚上中学生不用上晚自习 传说对决需要的配置 传说对决修改 请问大神们 我想在手机上玩 传说对决(台服王者荣耀) 出现酱紫情况 怎么办呀 传说对决可以像王者那样修改英雄的攻击文件吗? 如何把一个华为的传说对决帐号转到另一个vivo手机上? VIVO手机可不可以玩传说对决? 如何把一个华为的传说对决帐号转到一个vivo手机上并且手机主人不同但是同一个? js里面的继承该怎么理解,原型链是什么概念,这方面的内容很重要么 用友畅捷通的软件和用友U8的软件哪个好呀 有个甩甩宝宝的社交电商平台,知道这里的货品保真不保真吗? 做甩甩宝宝掌柜收益怎么样? 甩甩宝宝是什么平台? 知道甩甩宝宝吗?这个是传销吗? 甩甩宝宝这个社交电商平台上面的货品是真的吗? 甩甩宝宝社交电商平台靠谱吗? 你们感觉甩甩宝宝的发展前景怎么样? 建议在甩甩宝宝上买东西吗? 在甩甩宝宝买东西靠谱吗 甩甩宝宝融资额在其行业中是不是算比较多的? 做甩甩宝宝掌柜赚钱吗?