Javascript s03
1.函数
函数也是一个对象.
alert(func instanceof Object);
注意点:
(1)形参不能带有默认值
(2)函数可以嵌套函数
2.常用的调用方式
作为函数调用 test();
作为方法调用 this.test();
作为构造方法 new Object(); Object其实是一个函数
作为命名空间 (function(){ alert('tttt') })();
避免使用全局变量,防止变量污染的问题
在原型上添加了属性,就算之前实例话的对象,也自动拥有
3.对象的constructor属性
可以查看到该对象是由那个对象构造的
4.如何在js中,定义对象
/*
class Student{
var name;
var age;
function Student(){
//var name='无名氏';//局部变量,不是属性
this.name="无名氏";
this.age=18;
alert('ddddd');
//this.run();
//this.run=function(){}//等同于将下面的run()方法,重写了
}
function run(){}
}
*/
function Student(){
//var name='无名氏';//局部变量,不是属性
this.name="无名氏";//定义属性
this.age=18;
//alert('ddddd'); //当new时,会执行构造函数,这句代码在构造函数中,会被执行
this.say=function(){
document.write("大家好呀,我是" + this.name + "<br>");
}
}
var stu1=new Student();
document.write(stu1.name);
document.write(stu1.age);
stu1.say();
5.给函数定义属性
function test(){
return ++test.i;
}
test.i=0;
document.write(test());
document.write(test());
document.write(test());
document.write(test());
6.arguments.callee 只当前正在执行的函数
7.sum.length是函数定义了多少个形参?
arguments.length 与 函数名.length的区别?
arguments.length:只能在函数的内部使用,表示函数在调用的那一刻,实际传递了多少个参数
函数名.length,可以在外部使用(内部一样),表示定义了多少个形参
实参arguments.length有可能大于形参(函数名.length)
在PHP中 ,func_num_args(),func_get_args();
function(a,b) 如果多传的形参,则没用,这就是为什么有效形参要放前面
8.prototype 原型
function Student(){
Student.prototype.age=18;
Student.prototype.email="a@a.com";
}
var obj=new Student();
document.write(obj.email);
//每一个函数,都有一个原型对象prototype,属于函数的
//有什么用?
//当在使用new通过函数创建对象时,对象就继承自这个prototype
//可以使用this,在函数(构造方法)中,调用这个对象的属性
//如果这个对象,没有该属性,则去原型对象prototype中寻找
9.常用对象的属性和方法
a.数组Array
length
join() toString 跟PHP(implode)
sort()排序
reverse() 反转
concat()
splice()
push() pop()
shift() unshift();
b.字符串Stirng
length 中文占几个? 1个
在PHP中 UTF-8 strlen($str) 3个
ANSI 2个
gbk 2个
str.toLowerCase()
str.toUpperCase()
str.charAt(index) //"lamp".charAt(1).toUpeerCase(); a
str.indexOf()
var email="aaa@dd.com";
alert(email.indexOf("@")); //3
str.substring //substr
alert(email.substring(4,7)); //只取到3
js的substring与JAVA一样,第二个参数是索引
php,与C#一样,第二个参数是长度
d.数学Math
PI
Math.random()
Math.abs()
Math.ceil()
floor()
round()
max()
min()
pow()
e.正则对象
1. / 正则表达式RegExp /gim
2. new RegExp("正则表达式","模式修正符")
调用字符串的方法,把正则放进去
g global 全局
i ignoreCage 不区分大小写
m mutiline 多行模式
方法:
正则.test("要测试的字符串");
str.match(正则对象);
str.replace(正则对象,用于替换的新内容);
"lamp".replace(/am/,"AM"); //lAMp
str.search(正则)
f.日期date
对象是new出来的
var now=new Date;
两个方法setXxx() getXxx()
getFullYear(); //只能用这个了
getMonth() //特殊0-11 从0开始 要+1
...
getDay() 0-6星期
getTime() //从1970年开始 的毫秒 与PHP不一样
new Date(1999,2,12,15,44,09)