JavaScript原型和原型链

原型链图解:

原型Prototype概述

JavaScript 通过构造函数生成新对象,因此构造函数可以视为对象的模板。实例对象的属性和方法, 可以定义在构造函数内部。
构造函数优点是:构造函数创建的属性和方法可以在实例之间共享
缺点是:如果实例之间有相同的方法,这个方法都会创建一遍,这样会造成系统资源的浪费
解决方法:
function Cat(name, color) {
this.name = name;
this.color = color;
this.meow = function () {
console.log('喵喵');
};
}
var cat1 = new Cat('大毛', '白色');
var cat2 = new Cat('二毛', '黑色');
cat1.meow === cat2.meow// false

这就是JavaScript的原型对象(prototype)

prototype的使用

JavaScript继承机制的设计思想就是:原型对象的所有属性和方法,都能被实例对象共享

JavaScript规定,每个函数都有一个prototype属性,指向一个对象

对普通函数来说,这个属性没有效果,对于构造函数来说,生成实例会自动成为实例对象的原型

constructor属性

prototype对象(原型对象)有一个constructor属性,默认指向prototype对象所在的构造函数。  

由于constructor属性定义在prototype对象上面,意味着可以被所有实例对象继承。  

constructor属性的作用是,可以得知某个实例对象,到底是哪一个构造函数产生的。  

__proto__属性

__proto__ 属性是每一个对象以及函数都隐含的一个属性。 __proto__ 属性指向的是创建他的构造
函数的 prototype 。原型链就是通过这个属性构件的。

 原型也是一个对象,既然是对象就会有 __proto__ 属性,该属性指向原型对象的原型。

原型链

总结

在JavaScript里,万物皆对象

所有的函数都是function的实例,

最后都会指向Object.prototype的原型对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值