01-Javascript(全局和局部变量)
在script标签内定义的变量,在整个页面都有效。称之为全局变量。如果想限定一个变量的使用范围的话,在函数里面定义的变量就是局部变量。而在脚本片段定义的变量,是全局变量。
Var x=3;
Function show(x){
X=8;
}
Show(x);//最后打印结果为3。
代码如下:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var x=3;
function show(x){
x=8;
}
show(x);
document.write("x="+x);
</script>
</body>
</html>
02-Javascript(常见对象-Object)
js也是面向对象的。演示一下Object对象。
- toString(),将对象变成字符串。
<html>
<head>
</head>
<body>
<script type="text/javascript">
function show(){
alert("show run");
}
//alert(show.toString());
var arr=[3,4,1,6,8];
alert(arr.toString());
</script>
</body>
</html>
2.valueOf(),(跟上面的那个差不多)
<html>
<head>
</head>
<body>
<script type="text/javascript">
var arr=[3,4,1,6,8];
alert(arr.valueOf());
</script>
</body>
</html>
03-Javascript(常见对象-String-基本功能)
String对象:可用于处理或格式化文本字符串。
表现形式;
Var str=new String(“abc”);
Var str=”abc”;
<html>
<head>
</head>
<body>
<script type="text/javascript">
var str="abcde";
document.write("str="+str+"<br/>");//换行的正确形式。
document.write("len="+str.length);
</script>
</body>
</html>
方法很多,需要自己去查阅API文档信息资料。以下是String()方法的演示:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var str="abcde";
document.write("str="+str+"<br/>");
document.write("len="+str.length);
document.write("len="+str.bold());//加粗
document.write("len="+str.fontcolor("red"));//字体颜色
document.write("len="+str.link("http://www.baidu.com"));//超链接,不加http://为啥不行呢??
document.write("len="+str.substr(1,3));//1是开始,截取3个。
document.write("len="+str.substring(1,3));//1是起始,3是结尾,不包含3
</script>
</body>
</html>
04-Javascript(常见对象-String-自定义功能)
发现String对象方法有限,相对字符串操作的其他功能。比如:去除字符串两端的空格。这时只能自定义。
代码示例:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var str="abcde";
document.write("str="+str+"<br/>");
document.write("len="+str.length);
document.write("len="+str.bold());//加粗
document.write("len="+str.fontcolor("red"));//字体颜色
document.write("len="+str.link("http://www.baidu.com"));//超链接,不加http://为啥不行呢??
document.write("len="+str.substr(1,3));//1是开始,截取3个。
document.write("len="+str.substring(1,3));//1是起始,3是结尾,不包含3
//去除字符串两端的空格。
function trim(str){
//定义两个变量,一个记录开始的位置。一个记录结束的位置。
//对开始的位置的字符进行判断,如果是空格,就进行递增,直到不是空格为止。
//对于结束位置的字符进行判断,如果是空格,就进行递减,直到不是空格为止。
//必须要保证开始<=结束,这样才可以进行截取。
var start,end;
start=0;
end=str.length-1;
while(start<=end&&str.charAt(start)==" "){
start++;
}
while(start<=end && str.charAt(end)==" "){
end--;
}
return str.substrin(start,end+1);
}
var s=" ab c ";
alert("-"+trim(s)+"-");//不知道为啥加了trim不行,代码跟视频写的是一样的,但是还是不行啊?
</script>
</body>
</html>
05-Javascript(常见对象-String-原型属性prototype)
alert("abc".bold());//<b>this</b>
既然上述自定义的trim方法是用来操作字符串的方法,可不可以像字符串已有的方法一样,将该方法定义到字符串对象中呢?直接用字符串对象调用就可以了。
Prototype属性:返回对象原型的引用。
这里就可以使用一个该字符串属性来完成。
原型:就是该对象的一个描述。该描述中如果添加了新功能,那么该对象都会具备这些新功能。而prototype就可以获取到这个原型对象。通过prototype就可以对对象的功能进行拓展。
需求:想要给string对象添加一个可以去除字符串两端空格的新功能。就可以使用原型属性来完成。给string的原型添加一个功能。
//给string的原型中添加一个功能。注意:给对象添加新功能直接使用对象,新内容即可。
String.prototype.len=199;//给string的原型对象中添加一个属性,名为len。值为199.
Document.write(“haha”.len);
//添加行为。
String.prototype.trim=function();//trim是之前自己定义写好的方法
//这一部分挺重要
{
//把之前方法里面的东西复制粘贴过来就可以
}
自己把它封装成一个方法,以后自己直接调用即可。
07-Javascript(常见对象-Array-基本功能)
<html>
<head>
</head>
<body>
<script type="text/javascript">
var arr=["abc","haha","cba","nba"];
var arr2=["qq","xiaoqiang",70];
document.write(arr);
document.write(arr2);
//在arr数组上连接一个"mm",再连接一个arr2数组
document.write(arr.concat("mm",arr2));//将mm作为新数组中的元素,将arr2数组中的元素也作为新数组中的元素。
document.write(arr.join());//跟toString方法类似
document.write(arr.join("-"));//中间用-隔开而已,还是打印出来字符串
//pop()方法:移除数组中的元素,并返回该元素。
//shift()删除并返回第一个元素
//还有很多方法就不一一看了。大脑不是用来记忆,是用来思考的。
</script>
</body>
</html>
08-Javascript(常见对象-Array-练习-堆栈和队列结构)
用数组实现js中的堆栈或者队列数据结构。
<html>
<head>
</head>
<body>
<script type="text/javascript">
var arr=[];
arr.unshift("abc1","abc2","abc3");
doucument.write(arr);//abc1,abc2,abc3
arr.unshift("abc1");
arr.unshift("abc2");
arr.unshift("abc3");// abc3,abc2,abc1
</script>
//unshift和pop互为队列,unshift和shift互为堆栈。存元素和取元素的方式。
</body>
</html>
09-Javascript(常见对象-Array-练习-自定义功能)略过
10-Javascript(常见对象-Date-基本方法)
<html>
<head>
</head>
<body>
<script type="text/javascript">
//演示js中的日期
var date=new Date();
document.write(date+"<br/>");
document.write(date.toLocaleString()+"<br/>");
document.write(date.toLocaleDateString()+"<br/>");
//打印结果Tue Jul 17 2018 09:05:32 GMT+0800 (中国标准时间)
//2018/7/17 上午9:05:32
//2018/7/17
var year=date.getFullYear();
var month=date.getMonth();
var day=date.getDate();
var week=getWeek(date.getDay());
document.write(year+"-"+month+"-"+day+"-"+week);//可以分别打印出来
function getWeek(num)
{
var weeks={"周日","周一","周二","周三","周四","周五","周六"};
return weeks(num);
}
//日期对象和毫秒值之间的转换
var date2=new Date();//获取毫秒值
var time=date2.getTime();
document.write("time:"+time);
//将毫秒值转化成日期对象。
//1.new Date(time)
//2.setTime();
var date3=new Date(time);
//日期对象和字符串之间的转换,日期对象转成字符串。toLocaleString,toLocalDateString
//将字符串转成日期对象。 (自己多去实践吧,没有耐心了。)
</script>
</body>
</html>
11-Javascript(JS中特有语句-with)
为了简化对象调用内容的书写,可以使用js中的特有语句with来完成。
格式:
With(对象)
{
在该区域中可以直接使用指定的对象的内容。不需要写对象.。
}
var year=date.getFullYear();
var month=date.getMonth();
var day=date.getDate();
var week=getWeek(date.getDay());
document.write(year+"-"+month+"-"+day+"-"+week);//可以分别打印出来
等价于:
With(date)//可以达到简化书写的目的。(前提是要有对象,要不然没法简化)
{
var year=getFullYear();
var month=getMonth();
var day=getDate();
var week=getWeek(getDay());
document.write(year+"-"+month+"-"+day+"-"+week);//可以分别打印出来
}
12-Javascript(常见对象-Math-基本功能)
演示Math对象,该对象的方法都是静态。不需要new,直接Math调用即可。
<html>
<head>
</head>
<body>
<script type="text/javascript">
var num1=Math.cell(12.34);//返回大于等于指定参数的最小整数
var num2=Math.floor(12.34);//返回小于等于指定数据的最大整数
var num3=Math.round(12.34); //四舍五入
doucument.write(num1+"</br>");
doucument.write(num2+"</br>");
doucument.write(num3+"</br>");
var num4=Math.pow(2,3);//2的3次方
//parseInt方法(Math.random()*10+1)属于全局对象中的方法。
</script>
</body>
</html>
13-Javascript(全局方法&Number对象)
<html>
<head>
</head>
<body>
<script type="text/javascript">
document.write("123"+1);//1231
document.write(parseInt("123")+1);//124
var val=parseInt("abc");
document.write("value="+isNaN(val));//通过isNaN方法来判断结果是否非法
var val=parseInt("12abc");//数字在前面,取前面的数字部分,如果开头是字母,则会直接报错。
document.write("value="+val);//val=12
var num=parseInt("110",2);//将指定进制格式的字符串转换成十进制
document.write("num="+num);//6
//将十进制转化成其他进制使用数字对象完成。
var num3=new Number(6);
document.write("num3="+num3.toString(2));//110
var num4=60;//一切其实都是对象。不妨碍它是对象,也可以调用该方法。有点像自动装箱,被我猜到了,跟老师说的一样。哈哈
document.write("num4="+num4.toString(16));//3c
</script>
</body>
</html>
- Javascript(JS中的特有语句-forin)
For in 语句
格式:
For(变量 in 对象)//对对象进行遍历的语句
var arr=[32,80,65];
for(i in arr){
document.write("i="+arr[i]);//可以把数输出出来
}//直接可以遍历打印出来
15-16Javascript(JS自定义对象)——比较重要(具体需要自己练习,大致简单看了看)
如果想要自定义对象,应该先对对象进行描述。Js是基于对象,不是面向对象的。不具备描述事物的能力。我们还想面对对象的思想编写js。
就要先描述,在js中,可以用函数来模拟面向对象中的描述。
用js来描述人
<html>
<head>
</head>
<body>
<script type="text/javascript">
//用js来描述人
function Person(){//相当于构造器。
// alert("Person run");
}
//通过描述进行对象的建立。
var p=new Person();
//动态给p对象添加属性,直接使用p.属性名即可。
p.name="zhangsan";
p.age=29;
//如果定义的p对象的属性赋值为一个函数,即可给p对象添加一个方法。
p.show=function(){
alert("show:"+this.name+":"+this.age)
}
p.show();
var obj=new Object();
obj.name="god father";
obj.age=2018;
alert(obj.name+":"+obj.age) //这玩意与java还是有很大不同
function Person1(name,age) //当然也可以像java一样先描述,封装好了再去使用。
{
this.name=name;
this.age=age;
this.setName=function(name){
this.name=name;
}
this.getName=function(){
return this.name;
}
}
var p=new Person("旺财",20);
alert(p.name);//旺财
alert(p.getName());
</script>
</body>
</html>
另外一种封装形式(键值对):定义一个实体
var pp={
//定义一些成员
“name”:”小明”,”age”:38,
“getName”:function(){
return this.name;
}
}
Alert(pp.age+”:”+pp.getName());//pp[“age”]这样书写也可以,pp[age]这样写不行
//对象调用成员有2种方式:
- 对象.属性
- 对象[“属性名”]
<html>
<head>
</head>
<body>
<script type="text/javascript">
var myobj={
myname:"lisi",myage:30;
}
alert(myobj.myname+":"+myobj["myage"]);//两种打印输出的方式。
</script>
</body>
</html>