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这样的 大概就是这个样子吧