javascript的基本数据类型

javascript是弱类型脚本语言,声明变量时无须指定变量的数据类型。
javascript总共有5种基本数据类型。分别是:

1.数值类型: 包含整数或浮点数。
2. 布尔类型:只有true和false两个值。
3. 字符串类型:字符串变量必须用引号括起来,引号可以是单引号也可以是双引号。
4. undefined类型:专门用来确定一个可以创建但是没有初值的变量。
5. null类型:用于表明某个变量的值为空。

数值类型:

<script type="text/javascript">
   var a = 3.12e1;
   var b = 45.0;
   var c = .34e4;
   var d = .24e-2;
</script>

字符串类型:

<script type="text/javascript">
	var a = "Hello java";
	var b = 'Hello php';
</script>

indexOf()为搜索目标字符串searchString出现的位置。

lastIndexOf()搜索目标字符串最后一次出现的位置。

<script type="text/javascript">
	var a = "hellojavascript";
	var b = a.indexOf("llo");
	var c = a.indexOf("llo",3);
	var d = a.lastIndexOf("a");
	alert(b + "\n" + c + "\n" + d);
</script>

substring()从start(包括)索引处,截到end(不包括)索引处,不截取end索引处的字符。
slice()与substring()功能基本一致,区别是可以接受负数作为索引,负数作为索引时,从字符串右边开始计算索引。

<script type="text/javascript">
	var a = "hellojavascript";
	var b = a.slice(0,4);
	var c = a.slice(2,4);
	var d = a.slice(4);
	var e = a.slice(-3,-1);
</script>

布尔类型:
布尔类型的值只有两个:true和false

<script type="text/javascript">
	if(navigator.cookieEnabled){
	alert("浏览器支持使用cookie");
}
else{
	alert("浏览器禁用cookie");
}
</script>

undefined和null:

<script type="text/javascript">
	var x,y=mull;
	if(x==undefined){
		alert("声明变量后值默认为undefined");
}
if(x==null){
	alert("声明变量后值默认为null");
}
if(x==y){
	alert("x(undefined)==y(null)");
}
if(String.xyz === undefined){
	alert("不存在的属性值默认为undefined");
}
</script>

创建函数的三种方式

1.定义命名函数:
定义命名函数的语法格式为:

function functionName(parameter-list){
	statements
}

实例;

<script type="text/javascript">
	hello('yeeku');
	function hello(name){
	alert(name + ",你好");
}
</script>

2.定义匿名函数:
定义命名函数的语法格式为:

function(parameter-list){
	statements
}

实例:

<script type="text/javascript">
	var f = function(){
	document.writeln('匿名函数<br>');
	document.writeln('你好'+name);
};
f('yeeku');
</script>

3.使用Function类匿名函数:

<script type="text/javascript">
		var f = new Function('name',"document.writeln('Function定义的函数<br>');"
			+ "document.writeln('你好' + name);");
		f('yeeku');
	</script>

调用函数的三种方式:

直接调用函数

直接以函数附加的对象作为调用者,在函数后括号内传入参数来调用函数

以call()方法调用函数

为了动态的调用函数,需要用call()方法来调用

以apply()方法调用函数

与call()方法功能基本类似,都能动态调用函数

1.直接调用函数:

<script type="text/javascript">
	//调用window对象的alert()方法
	window.alert("测试");
	//调用p对象的walk方法
	p.walk()	
</script>

2.以call()方法调用函数
调用者.函数(参数1,参数2…) = 函数.call(调用者,参数1,参数2)

<script type="text/javascript">
		var each = function(array,fn){
			for(var index in array){
				fn.call(each,index,array[index]);
			}
		}
		each([4,20,3],function(index,ele){
			document.write("第"+index+"个元素是:"+ele+"<br>");
		});
	</script>

3.以apply()方法调用函数:

<script type="text/javascript">
		var myfun = function(a,b){
	alert("a的值是:"+a+"b的值是:"+b);
}
	myfun.call(window,12,33);
	myfun.apply(window,[12,33]);
	var example = function(num1,num2){
	myfun.apply(this,arguments);
}
example(20,40);
	</script>

定义对象的三种语法:

创建对象

使用new关键字调用构造器定义对象

使用Object类定义对象

使用JSON语法创建对象

1.使用new关键字调用构造器定义对象:

<script type="text/javascript">
	function Person(name.age){
		this.name = name;
		this.age = age;
    }	
    var p1 = new Person();
    var p2 = new Person('yeeku',29);
    document.writeln(p1.name + p1.age+"<br>");
    document.writeln(p2.name + p2.age+"<br>");
</script>

2.使用Object类定义对象:

<script type="text/javascript">
	var myObj = new Object();
	myObj.name = 'yeeku';
	myObj.age = 29;
	document.writeln(p1.name + p1.age+"<br>");
</script>

3.使用JSON语法创建对象:

<script type="text/javascript">
	person = {
		name : 'yeeku',
		gender: 'male',
		son:{
			name:'nono',
			gender:1
		},
		info : function(){
			document.writeln(this.name + this.age);
		}
	}
</script>

创建类以及继承的标准写法:

定义javascript函数时,也就得到一个同名的类,而且该函数就是该类的构造器

下面我们通过一个例子实现创建类

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-=Type" Content="text/html;charset = utf-8" />
	<title>swutch and ifelse 语句</title>
	<script type="text/javascript">
		//定义一个Person类
		function Person(name,age){
			this.name = name;
			this.age = age;
			this.info = function(){
				document.writeln("姓名:" + this.name);
				document.writeln("年龄:" + this.age);
			}
		}
		var p1 = new Person('yeeku',29);
		p1.info();
		Person.prototype.walk = function(){
			document.writeln(this.name + '  abcd...0<br>');
		}
		document.writeln("<hr />");
		var p2 = new Person('leegang',30);
		p2.info();
		document.writeln("<hr />");
		p2.walk();
		document.writeln("<hr />");
		p1.walk();
	</script>
</head>
<body>
</body>
</html>

继承的标准写法:

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-=Type" Content="text/html;charset = utf-8" />
	<title>swutch and ifelse 语句</title>
	<script type="text/javascript">
	    function Person(name,age){
			this.name = name;
			this.age = age;
		}
		//通过prototype方法为Person类定义一个sayHello函数
		Person.prototype.sayHello = function(){
			console.log(this.name+"向您打招呼!");
		}
		var per = new Person("牛魔王",22);
		per.sayHello();
		function Student(name,age,grade){
			//继承Person类
			Person.call(this,name,age);
			this.grade = grade;
		}
		//继承Person.prototype方法
		Student.prototype = new Person();
		//通过prototype方法为Student类定义一个intro函数
		Student.prototype.intro = function(){
			console.log("%s是个学生,读%d年纪",this.name,this.grade);
		}
		var stu = new Student("孙悟空",5);
		//stu调用Person类的方法,实现继承
		stu.sayHello();
		//stu调用自己的方法
		stu.intro();
	</script>
</head>
<body>
</body>
</html>