我理解的原型

js中几大疑难杂症  原型  通常提到原型都会提到继承  我觉得原型就是为了继承啊 比如你想给你代码里的一个对象扩展一个通用的方法 就可以写成 

Array.prototype.func=function(){

  alert(1);

}

这样就给数组对象添加了一个func方法   这样   

var arr=[1,2,3];

arr.func();就跟数组自带的很多方法是一样的 这就是利用prototype扩展内置对象的公用功能

再比如说 声明一个数组 var arr=[1,2,3];   在控制台可以看见除了数组本身的三个元素之外还有一个_proto_

在举个例子  function Student(name,age){

                             console.log(name+age);

                             }

           var anna=new Student("anna",11);

         Student.prototype.func=function(){alert(1)}

         anna.func();   可以弹出1;  这说明啥  

构造函数Student 所有构造函数都有它自己prototype  

在创建一个对象的时候 创建anna的时候  分别做了三件事情   

1:创建一个空对象

2:按照构造函数的定义为魔板初始化对象中的属性和方法

3:设置它的_proto属性 指向构造函数的原型....


有些面试可能会问到_proto_和prototype是啥关系  其实我理解的就是上边说的那样的   

比如js提供了内置对象Array  然后你再自己新建数组对象的时候 可以这样写  var arr=[1,2,3] 这样也可以 但是你也可以写成这样的呀  var  arr =new  Array(1,2,3);  这不就是构造函数的写法了吗  然后啦  上面的这个arr的_proto属性是指向他的构造函数的原型  也就是 Array.prototype这样的   大概就是这个样子吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值