一,JS是基于原型的对象
//最基本的面向对象写法 //创建构造函数 function Aaa(){ this.name=‘小明‘; } //构造方法 Aaa.prototype.showName=function(){ alert(this.name); } //使用 //创建实例 var a1=new Aaa(); a1.showName(); //在JS源码中:系统对象也是基于原型的程序 function Array(){ this.lenglth=0; } Array.prototype.push=function(){}; Array.prototype.sort=function(){}; var arr=new Array(); arr.push(); arr.sort();
二,包装对象
/*var str=‘hello‘; alert(typeof str);//string str.charAt(0); str.indexOf(‘e‘);*/ //包装对象:基本类型都有自己对应的包装对象,String/Number/Boolean //var str=new String(‘hello‘); //alert(typeof str);//object //String.prototype.charAt=function(){}; var str=‘hello‘; //调用此句时触发的动作:基本类型会找到对应的包装对象类型,然后包装对象把所有的属性和方法给基本类型,然后包装对象消失 //str.charAt(0); //在原型上创建的方法是共享的 String.prototype.lastValue=function(){ return this.charAt(this.length-1); } alert(str.lastValue());//o //调用此句时,在String包装对象下创建num属性,创建完成后包装对象消失 str.num=10; //此句又重新创建了num属性 alert(str.num);//undefined