js原型与原型链总结

原型是什么,用翻译翻译过来就是prototype。讲原型的时候我们可以先补充几点其他知识点,这样可以方便我们理解prototype。
补充一:我们得先知道,引用类型(数组,对象,函数),他们都是具有对象的可拓展属性(可以百度理解)。比如,foo是个对象,foo.a=1,可以扩展一个a属性。
补充二:我们得先说说构造函数。其实所有引用类型都有构造函数。
var a = {}; 它还有这样的写法,var a = new Object();Object是a的构造函数
var b = [] ;它还有这样的写法, var b =new Array(); Array是b的构造函数
function Foo(){},它还有这样的写法var Foo = new Funcrion(){},Foo的构造函数是Function
我们可以使用instanceof来判断一个函数是否是一个变量的构造函数。是的话返回true,否则返回false。
第三:所有的引用类型(函数,数组,对象)是都是对象。那么是对象,就具有对象的可拓展特性。对象本身就带有一个属性,叫做__proto__属性,他也叫做隐式原型。
当我们想要得到某个对象的属性值时,如果这个对象没有这个属性,那么我们就需要去这个对象的隐式原型_proto_上面去找。如果还找不到的话,我们就需要去构造函数的隐式原型去找,如果还找不到,那么就会在这里停止寻找了。
例如:
var Foo = new Function(){},
var fn = new Foo()
fn.toString();
fn想用toString()属性,他首先会在fn.proto 去寻找 (fn.proto === Foo.prototype),如果还没找到,他就会到fn.proto.__proto__里卖去找,fn.proto.__proto__也等于Object.prototype里面去寻找,结果找到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值