js中函数的prototype.constructor是指向函数本身,它有什么用

 我来答
豆包丨干粮
2017-09-26 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:66%
帮助的人:68.4万
展开全部

js中函数的prototype.constructor是指向函数本身,它有什么用?修改后会有什么影响?

1,首先constructor并不是都可写,对于原始值(如1,true 或 "test"),该属性为只读。
2,constructor指向的是函数本身,这里的指向我们如果修改了,是会影响到所有通过此构造器生成的实例的,要理解这里就要去看一些javascript prototype原型方面的介绍,prototype的作用是继承和共享属性用的,他的作用范围会影响所有实例。
3,依赖constructor的检测是很不安全的,因为他随时可能被修改或者覆盖。

相关知识链接

------

constructor - JavaScript
ECMAScript Language Specification

-----

可能某些同学不太理解,我来个实际例子来解释一下好了:
constructor属性的出现从它本身的作用就可以理解,它有2个作用:

1,拿到实例的构造器。

比如我拿到了一个实例,想对其的某些原型方法进行修改(很危险),但是其实是可以通过拿constructor再改写这个constructor的prototype来影响所有实例的。(动态修改,这个时候你一定要知道你在做什么。。否则真的很危险)

2,对比两个实例是否是同一类型(native constructor)。
"string".constructor === String.prototype.constructor
再或者:
function test(){}
test1 = new test();
test2 = new test();
我们有些时候是需要判断test1和test2是否为同一类型的(比如我们确定是同一类型,那么他们应该就会有共有的prototype了吧?太天真了,这都是不靠谱。。)

-------

最后,如果你不知道你在做什么或者写什么,请先弄明白你需要干什么,再问为什么……否则,真的很危险……

作者:小爝
链接:https://www.zhihu.com/question/28570984/answer/41413202
来源:知乎   望给予采纳
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

新新岁岁年d
2017-09-26 · 超过77用户采纳过TA的回答
知道答主
回答量:225
采纳率:0%
帮助的人:102万
展开全部
是父级元素的描述
我写段东西说明下

var a = function(){}
//指向你通过new创建实例所产生的对象源
//function本身自己就是个对象,所以指向自己
a.prototype.constructor
//指向你当前Function对象的的父级元素
a.prototype.__proto__

var b = new a
b.constructor === a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式