原型链


使用原型对象的优点:可以让所有对象实例共享它所包含的属性和方法。
      1. 构造函数(supperClass)有prototype属性,指向实例对象的原型对象(supperClass.prototype);
     /*通过同一个构造函数实例化的多个对象具有相同的原型对象,经常使用原型对象来实现继承*/

实例对象有-proto-(对象的内部原型),并且指向创建该对象的函数的prototype;

(prototype就是通过调用构造函数而创建那个对象实例的原型对象)

那么由该函数new出来的实例对象也有该函数的所有方法。(不必在构造函数中定义对象实例的信息);

      2.原型对象有一个construct属性,指向该原型对象对应的构造函数

      3.supperClass.prototype是一个对象,也有-proto-属性,所以它的这个属性也指向创建该对象的构造函数的prototype,

所以他的-proto-指向Object.prototype

      4.实际上,任何对象都可以看做是通过Object()构造函数的new操作实例化的对象,所以supperClass.prototype这个对象的

-proto-属性指向Object.prototype.;

任何函数作为对象时,它的_proto_也应该指向创建它的函数的prototype,即Function.prototype。
而Function.__proto__ === Function.prototype

       5.函数也是对象,只不过是具有特殊功能的对象而已。任何函数都可以看做是通过Function()构造函数的new操作实例化的结果;

例如:function fn1( x , y){  return  x + y ;  }  console.log ( fn1( 2,3 ) ) //5

           var fn1=new Function( " x " , " y " , "return  x + y")  console.log ( fn1( 2,3 ) ) //5

      6.对象O  instanceof  构造函数(constructor

instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

对象O沿着-proto-开始是找,构造函数沿着prototype开始找,如果能找到同一引用,证明是同一对象。


1.JS中,函数本身也是一个包含了方法和属性的对象。

2.prototype是每个函数中都有的一个属性,叫做原型,它是一个对象。

3.__proto__是每个对象都具有的一个属性,这个指向了它的构造函数的原型(prototype),是它的引用(我们称这个属性为链接,而且每个prototype都有__proto__属性,因此本身也包含了指向其原型的链接,由此形成了一条链,我们称为原型链。

4.Object是JS所有对象的父级对象,Object()为构造函数。

5.Function是所有函数对象的构造对象,Function()为构造函数,所以Object和Function都有prototype属性。

6.我们可以通过constructor来查看对象的构造函数,isPrototypeOf来确定某个对象是不是我的原型,hasOwnProperty 方法判断属性是否存在


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值