JS原型与原型链

1、什么是原型?

        JavaScript中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象。Object、Array、Date、RegExp、Math等为普通对象。Function 是JS自带的函数对象。当用typeof得到一个函数对象的类型时,它仍然会返回字符串“function”,而typeof一个数组对象或其他的对象时,它会返回字符串“object”。

alert(typeof(Function)));
alert(typeof(new Function()));
alert(typeof(Array));
alert(typeof(Object));
alert(typeof(new Array()));
alert(typeof(new Date()));
alert(typeof(new Object())); 

        运行这段代码可以发现:前面4条语句都会显示“function”,而后面3条语句则显示“object”,可见new一个function实际上是返回一个函数。这与其他的对象有很大的不同。其他的类型Array、Object等都会通过new操作符返回一个普通对象。

        每个对象都有原型即__proto__(null和undefined除外),你可以把它理解为对象的默认属性和方法。

2、什么是protoType?

        在JavaScript中所有的函数对象均有protoType属性。并且浏览器会为我们开辟一个独立的内存空间,这个内存空间可以让我们盛放共有的属性和方法,通过protoType来指向。

3、什么是constructor

        在默认情况下,a.protoType下会带有一个constructor属性,该属性指向创建当前函数对象的构造函数。比如这里的constructor指向构造函数啊本身

a.protoType.constructor==a //true
4、什么是原型链?

        在JavaScript 中,每个对象都有一个指向它的原型(prototype)对象的内部链接。这个原型对象又有自己的原型,直到某个对象的原型为 null 为止(也就是不再有原型指向),组成这条链的最后一环。这种一级一级的链结构就称为原型链(prototype chain)。

        JavaScript 对象是动态的属性“包”(指其自己的属性)。JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依此层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

        当你用new Object或者直接定义一个对象时,它的原型链就是:

o ==》 Object.prototype ==》 null

        当你用构造函数(构造函数我们一般首字母大写)建立一个对象时,它的原型链就是:

tsrot ==》 Person.prototype ==》 Object.prototype ==》 null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑ii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值