面向对象 1、字符串类String length 获取字符串中字符的长度 str=’hello’ indexOf(string) 获取某字符在字符串中出现的位置 substr(num1,[num2]) 字符串的截取,num1开始位置,num2结束位置 toLowerCase() 转化为小写 toUpperCase() 转化为大写 replace(str1,str2) 字符串替换,str1代表要替换的字符串,str2代表替换后的字符 串 var str = 'hello,javascript'; document.write('原字符:'+str); document.write('<hr>'); document.write('字符长度:'+str.length); document.write('<hr>'); document.write('替换后的字符:'+str.replace('javascript','php')); 2、日期类Date getYear() 获取年份(会有兼容性的问题),从1900年1月1日 getFullYear() 获取完整年份 getMonth() 获取月份(0-11) getDate() 获取天数(1-31) getDay() 获取星期几 getHours() 获取小时 getMinutes() 获取分钟 getSeconds() 获取秒数 getMilliseconds() 获取毫秒数 var date = new Date(); document.write('当前年月日:'+date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()); 3、数学类 Math ceil(数值) 获取大于或等于该数的最小整数 19.98 floor(数值) 获取小于或等于该数的最大整数 min(数值1,数值2) 返回最小数 max(数值1,数值2) 返回最大数 pow(数值1,数值2) 返回数值1的数值2次方 pow(2,2) 4 random() 返回随机数(0-1) round(数值) 四舍五入 sqrt(数值) 返回平方根 16 4 document.write('ceil函数:'+Math.ceil(19.98)); document.write('<hr>'); document.write('min方法:'+Math.min(10,20,30)); document.write('<hr>'); document.write('随机数:'+Math.random()); 2自定类的定义 面向对象过程中常用的几个关键词 alert( p.constructor ); constructor:调用对象的构造器 alert( typeof p ); typeof:类型 alert( p instanceof person ); instanceof:判断某个对象是否属于某个类 深入理解this指针 function test(){ this.i=100; } i=10; test(); alert(this.i);//100;在js全局变量作用域中,this指向window对象this.i === window.i 1、构造器方式 function 类名() {} 在js中是没有类的定义语句的(如class),那么在js中,当我们定义一个函数,系统会默认该函数为同名类下的构造函数,我们也可以把这个函数称之为构造器。 以上例子说明,当我们创建一个Person函数时,系统会默认认为,该函数是Person类下的构造函数,我们也可以称之为Person的构造器 实际应用:如何通过对象作为返回值,返回一个函数的四则运算? function display(first,second) { var count = new Object(); count.jia = first+second; count.jian = first-second; count.cheng = first*second; count.chu = first/second; return count; } var obj = display(200,100); alert('相加:'+obj.jia+'相减:'+obj.jian+'相乘:'+obj.cheng+'相除:'+obj.chu); delete方法 function Person() {} var p1 = new Person(); p1.name = 'wangcai'; p1.age = 30; p1.addr = '广州市'; delete p1.addr; for(var i in p1) { document.write(p1[i]+'<hr>'); } 原型对象:当我们加载一个函数构造器,会自动在内存创建一个对象,我们把这个对象就称之为原型对象。在Person构造中,存在一个prototype的属性,该属性指向Person的原型对象,同样,在Person原型对象中,也存在一个属性constructor,指向我们的Person构造器。 原型对象的功能? 当我们通过构造器或构造函数创建一个对象后,为其属性进行复制,当我们调用对象的某一个属性时,其首先在对象内部寻找该属性,如果寻找不到,那么将到该构造器的原型对象中去寻找 应用: function Person() {} //类的定义 var p1 = new Person(); //对象的定义 p1.name = 'zhangsan'; p1.age = 23; //通过原型添加的方式添加address属性 Person.prototype.address = '广州市传智播客'; //通过原型添加的方式添加speak方法 Person.prototype.speak = function() { alert(this.name+'在说话'); } alert(Person.prototype.constructor.prototype.constructor.prototype.constructor); 4、闭包的作用 1)可以调用局部变量 2)闭包会一直驻留在内存中 由于闭包会导致变量以及函数一直驻留在内存中,所以可能会引起内存泄漏,所以不用时,请置空:null(上题请设置test=null) call与apply方法主要功能有两个:功能呢一样,传递参数形式不同 1、改变内部的this指向 2、执行函数 color.call(this);//color.call(this,参数1,参数2,); size.apply(this);//size.apply(this,[参数1,参数2,])