JavaScript是弱类型脚本语言,声明变量时无须指定变量的数据类型。JavaScript变量的数据类型是解释时动态决定的。JavaScript的基本数据类型有5个。
数值类型(number):包含整数和浮点数
布尔类型(Boolean):只有true和false两个值
字符串类型(String):字符串变量必须用引号括起来,引号可以是单引号,也可以是双引号
undefined类型:专门来确定一个应将创建但没有复制的变量
null类型:用于表明某个变量的值为空
<script type="text/javascript">
var num=5;
var str="shfkkg";
var n=89.5;
var ob=new Object();
var un
var nul=null;
document.write(typeof(num)+'<br/>'+typeof(str)+'<br/>'
+typeof(n)+'<br/>'+typeof(ob)+'<br/>'+typeof(un)+'<br/>'+typeof(nul));
</script>
JavaScript变量的数据类型还有一种复合类型,大致有三种:
Object:
对象是一系列命名变量 函数的集合,其中命名变量的类型可以是基本数据类型也可以是符合类型,对象中的命名变量称为属性,对象中的函数称为方法。
Array:数组
var a=[1,2,3]
var b=[];
b[0]=6;
b[1]='hello';
var c=new Array();
c[5]=1;
其中数组c的长度为6;
Function:函数
创建函数的三种方法
1.定义命名函数
2.定义匿名函数
3.new Function语句
//定义命名函数
function m1(a,b) {
alert(a + b);
}
//定义匿名函数
var m2 = function(a,b) {
alert(a + b);
}
//函数声明和函数表达式最终内部执行的就是new Function语句
var m3 = new Function('a','b','alert(a+b);');
调用函数的三种方法
1.直接调用函数
以函数附加的对象作为调用者,在函数后括号内传入参数来调用函数
调用者.函数(参数一,参数二…)
//调用window对象的alert方法
window.alert("测试代码");
//调用p对象的walk方法
p.walk();
2.以call()方法调用函数
函数.call(调用者,参数一,参数二…)
var each=function(array,fn)
{
for(var index in array)
{
//以window为调用者来调用fn函数。
//index array[index]是传给fn函数的参数
fn.call(null,index,array[index]);
}
}
//调用each函数,第一个参数是数组,第二个参数是函数。
each([4,20,3],function(index,else)
{
document.write("第"+index+"个元素是:"+ele+"<br/>")
});
3.以apply()方法调用函数
函数.apply(调用者,[ 参数一,参数二… ])
var myfun = function(a,b)
{
alert(a+b);
}
//call调用
myfun.call(window,10,20);
//apply调用
myfun.apply(window,[10,20]);
call调用和apply调用功能基本相似,call需要逐个传入参数,apply调用可以用数组形式一次性传入所有参数。
创建对象的3种方法
1.使用new关键字调用构造器创建对象
//定义一个函数同时定义一个Person类
function Person(name,age)
{
this.name=name;
this.age=age;
}
//创建Person实例
var p = new Person('yeeku',3)
2.使用Object直接创建对象
//创建空对象
var myObj = new Object();
//增加属性
myObj.name='yeeku';
myObj.age=20;
3.使用JSON语法创建对象
使用JSON创建对象时,属性值可以是任何数据类型,还可以是函数,数组。
person
{
name:'yeeku',
gender:'male',
//使用JSON对象为其指定一个属性
son:
{
name:'noon',
grade:1
},
}
创建类
类有以下功能:
- 构造器
- 静态属性,静态方法
- 共有属性,共有方法
- 私有属性,私有方法
var Person = function(name, age){ this.name = name; this.age = age; this.sayName = function(){ console.log(this.name); }; }
继承类
假设现在存在一个构造函数想继承另一个构造函数。function Friend(){ this.friend="xiaohua"; } function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ console.log("hello,my name is " +this.name+" nice to meet you") }; }
我们可以在构造函数内部通过改变要继承的构造函数的this指向;
function Person(name,age){ Friend.apply(this,arguments);//添加了这一行 this.name=name; this.age=age; this.sayName=function(){ console.log("hello,my name is " +this.name+" nice to meet you.my friend is "+this.friend) };//在这里就可使用this访问friend了 }