js原型和原型链

  • 每一个函数都有原型prototype属性
  • 每一个对象(除了null外)都有__proto__属性
  • 每个原型都有constructor属性
    在这里插入图片描述
/*总结:
1.new一个对象,首先会读取实例对象的属性,若无,读取函数本身的属性;
若无,读取函数原型的属性;
2.若实例对象设置了属性,又删除了属性,则会读取函数原型中的属性*/

//函数本身的属性
function fn(){
	this.name = '函数name属性'
}

var f1 = new fn()
//给函数原型设置属性
fn.prototype.name = '原型name属性'
fn.prototype.age = '原型age属性'

var f2 = new fn()
var f3 = new fn()
//设置实例属性
f3.name = '实例name属性'

console.log(f1.name,f1.age)//函数name属性,原型age属性
console.log(f2.name,f2.age)//函数name属性,原型age属性
console.log(f3.name,f3.age)//实例name属性,原型age属性

//删除实例属性,则实例此时指向的是函数的原型
delete f3.name
console.log(f3.name,f3.age)//原型name属性,原型age属性

三种获取原型的方法

console.log(Object.getPrototypeOf(f1))//推荐使用
console.log(f1.__proto__)
console.log(f1.constructor.prototype)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值