js原型及原型链

创建对象的方法有:
1、字面量 {}
2、构造函数
3、系统自带的构造函数 new Object()
4、Object.create(原型) //可以无原型

new操作符
在函数体最前面隐式加上 var this = {proto:xxx.prototype}
然后执行this.xxx = xxx;
最后返回return this;

原型:原型是function对象的一个属性,它定义了构造函数构造出来的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。

Car.prototype ----->  {}  原型  是实例对象的公有祖先
function Car() {}
var car= new Car()

实例访问一个属性,如果自身没有,则去看原型上有没有
现在看看prototype对象里都默认有哪些属性
在这里插入图片描述
系统自带的属性constructor:通过这个属性可以得到实例的构造器
例如:car.constructor ----> Car
另外也可以手动改变这个属性值
__proto__属性里放的是原型,每一个对象都有__proto__属性
例如:

Person.prototype.name = 'abc'
function Person() {}
var person= new Person()

在这里插入图片描述
__proto__就是一个桥梁,当一个对象访问一个属性自身不存在时,就会沿着__proto__找到原型上去
__proto__可以被修改,例如person.proto = obj,那么person的原型就是obj了
用__proto__可以查看原型,但是一般用Object.getPrototypeof()查看原型

修改原型上的属性:只能是Person.prototype.name = ‘yhhjj’,不可以person.name = ‘yhhjj’,这样相当于给person增加一个name属性
删除原型上的属性:delete person.name

原型链。。。

原型的用处一
将构造函数里的不变属性放入原型里,也就是说提取共有属性,这样可以提高效率

Car.prototype = {
height: 1200,
lang: 'BSD'
}
function Car(color,owner) {
this.owner = owner;
this.color = color;
}
var car = new Car('red', 'xiaoming')
var car2 = new Car('black', 'xiaohong')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值