07 JavaScript 对象
By Kevin Song
- 07-01 Object对象
- 07-02 Number对象
- 07-03 String对象
- 07-04 Array对象
- 07-05 Date对象
- 07-06 Math对象
- 07-07 自定义对象
07-01 Object对象
常用方法
- toString
- 将该对象的原始值以字符串形式返回
- 在字符串运算里,会优先调用toString(),如alert(c)
- valueOf
- 返回最适合该对象类型的原始值
- 在数值运算里,会优先调用valueOf(),如a + b
<script type="text/Javascript">
function show() {
alert("show run");
}
alert(show.toString());
var arr = [1,2,3,4];
alert(arr.toString());
</script>
07-02 Number对象
- new Number(“123”);
- 属性
- MIN_VALUE 最小值:
- MAX_VALUE 最大值:
- NaN:表示不是数字
- 方法
- toFixed() 返回一个数字的小数表达
- a.toFixed(2) //123.00
- toExponential() 返回一个数字的科学记数法表达
- a.toExponential() //1.23e+2
- valueOf() 返回一个数字的对象的基本数字类型
- typeof a //object类型
- typeof a.valueOf() //123 number类型
- toFixed() 返回一个数字的小数表达
07-03 String对象
创建对象两种方式
var str = new String("abc");
var str = "abc"
- 常用属性
- length
- prototype
- 常用方法
- String a = new String(“123”);
- 根据角标找字符
- charAt()返回指定位置的字符
- s.charAt(0) //1
- charCodeAt()返回指定位置的字符对应的Unicode码
- s.carCodeAat(0)//49
- charAt()返回指定位置的字符
- 根据字符找角标
- indexOf() 返回字符串第一次出现的位置
- lastIndexOf 返回字符串最后一次出现的位置
- concat() 连接
- localeCompare 比较字符串是否相同
- 0 表示相同
- 1 表示字母顺序靠后
- -1 表示字母顺序靠后
- substr(start,length)子串
- subString(start,end)子串包含头不包含尾
- split(regex) 分割为数组
- replace(search,replacement)用replacement替换第一个search
- 多个替换
- var regS = new RegExp(“a”,”b”,”c”…);
- x.replace(regS,”o”);
- 多个替换
- bold()加粗
- fontcolor()字体颜色
- link()加上超链接
<script type="text/Javascript" src="out.js"></script>
<script type="text/Javascript">
var str = "abcde";
println("len="str.length);//len=3
alert(str.bold());//<b>abc</b>
println(str.bold());//加粗后的abc
alert(str.fontcolor("red"));//<font color="red">abc</font>
println(str.fontcolor("red"));//红色abc
alert(str.link("http://www.baidu.com"))//<a href="http://www.baidu.com">abc</a>
println(str.link("http://www.baidu.com"));//超链接abc
</script>
println(str.substr(1,3));//bcd
println(str.substring(1,3));//bc
out.js文件
function println(param) {
document.write(param+"<br/>");
}
function print(param) {
document.write(param);
}
自定义功能
去除字符串两端的空格
思路:
- 定义两个变量,一个记录开始位置,一个记录结束位置
- 对开始的位置的字符进行判断,如果是空格就递增,直到不是空格为止
- 对结束的位置的字符进行判断,如果是空格就递减,直到不是空格为止
<script type="text/Javascript">
function trim(arr) {
var start, end;
start = 0;
while (start<=end && str.charAt(start)==" ") {
start++;
}
while (start<=end && str.charAt(end)==" ") {
end--;
}
return str.substring(start,end+1);
}
var str = " ab c ";
alert("-"+trim(str)+"-");
</script>
prototype属性:给对象添加新功能
String.prototype.len = 100;//给String的原型对象中加了一个名为len值为199的属性
<script type="text/Javascript" src="stringtool.js">
var str = " ab c ";
alert("-"+str.trim()+"-");
</script>
stringtool.js文件
String.prototype.trim = function () {
var start, end;
start = 0;
while (start<=end && str.charAt(start)==" ") {
start++;
}
while (start<=end && str.charAt(end)==" ") {
end--;
}
return str.substring(start,end+1);
}
07-04 Array对象
定义数组的两种方式
- 方式一:var arr=[1,2,3,4];
- 方式二:使用Array对象来定义
- var arr = new Array();//var arr =[];
- var arr = new Array(5);//数组长度为5
- var arr = new Array(5,6,7);//数组元素是5,6,7
Array对象方法
- concat(element1,element2,…)在数组里添加新的元素
<script type="text/Javascript" src="stringtool.js">
var arr1 = ["aaa","bbb","ccc"];//aaa,bbb,ccc
var arr2 = ["eee","fff",10]//eee,fff,10
var newArr = arr1.concat("ddd",arr2);//aaa,bbb,ccc,ddd,eee,fff,10
</script>
- join(“-“)定义数组字符串连接符
<script type="text/Javascript" src="stringtool.js">
var arr1 = ["aaa","bbb","ccc"];//aaa,bbb,ccc
arr1.join("-");//aaa-bbb-ccc
</script>
- push() 在最后的位置插入数据并返回数组的新长度
- pop() 在最后的位置获取数据并返回该元素
<script type="text/Javascript" src="stringtool.js">
var arr1 = ["aaa","bbb","ccc"];
println(arr1);//aaa,bbb,ccc
arr1.pop();//ccc
println(arr1);//aaa,bbb
</script>
- unshift 在开始的位置插入数据并返回该数组
- shift 在开始的位置获取数据并返回该元素
- sort()正向排序(默认小的数在前)
- 自定义排序算法
- function comparetor(v1,v2) {return v2-v1;//v2-v1表示大的在前,小的在后}
- x.sort(comparator);
- 自定义排序算法
- reverse()反向排序
- slice(start,end)截取数组,包含start不包含end
- splice(start,deleteCount,element1,element2,…)从start开始删除deleteCount个元素并且加入新的元素,返回被删的元素
<script type="text/Javascript" src="stringtool.js">
var arr1 = ["aaa","bbb","ccc"];//aaa,bbb,ccc
println(arr1);//aaa,bbb,ccc
arr1.splice(1,1,111,"hhh","kkk");//bbb
println(arr1);//aaa,bbb//aaa,111,hhh,kkk,ccc
</script>
堆栈和队列结构实现
FIFO先进先出。队列结构
<script type="text/Javascript" src="stringtool.js">
var arr = [];
//arr.unshift("aaa","bbb","ccc");
arr.unshift(aaa);//aaa
arr.unshift(bbb);//bbb,aaa
arr.unshift(ccc);//ccc,bbb,aaa
arr.pop();//aaa
arr.pop();//bbb
arr.pop();//ccc
</script>
FILO先进后出。堆栈结构
<script type="text/Javascript" src="stringtool.js">
var arr = [];
//arr.unshift("aaa","bbb","ccc");
arr.unshift(aaa);//aaa
arr.unshift(bbb);//bbb,aaa
arr.unshift(ccc);//ccc,bbb,aaa
arr.shift();//ccc
arr.shift();//bbb
arr.shift();//aaa
</script>
自定义功能
<script type="text/Javascript">
var array = ["aaa","bbb","ccc"];
array.getMax();
array.toString();
</script>
arraytool.js文件
//数组获取最值
Array.prototype.getMax = function() {
var temp = 0;
for(var x = 1; x < this.length; x++) {
if(this[x] > this[temp]) {
temp = x;
}
}
return this[temp];
}
//数组的字符串表现形式
Array.prototype.toString = function() {
return "["+this.join()+"]"
}
07-05 Date对象
创建对象方法
- new Date():获取当前时间
常用方法
- toLocaleString()获取日期和时间
- toLocaleDateString()获取日期
- getFullYea()r获取年份
- getMonth()获取月份,+1之后才是实际月份
- getDate()获取日
- getWeek()获取星期
- getTime()获取毫秒值
<script type="text/Javascript" src="out.js">
var date = new Date();
println(date.toLocaleString());//日期和时间
println(date.toLocaleDateString());//日期
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
var week = date.getDay();
</script>
日期对象-毫秒值转换
日期对象–>毫秒值
var time = date.getTime();
毫秒值–>日期对象
var date3 = new Date(time);
日期对象-字符串转换
日期对象–>字符串
toLocaleString()获取日期和时间
toLocaleDateString()获取日期
字符串–>毫秒值–>日期对象
var str_date = "9/28/2017";
var time = Date.parse(str_date);
var date = new Date(time);
07-06 Math对象
该对象的方法都是静态的
<script type="text/Javascript" src="out.js">
var num1 = Math.ceil(12.34);//13 返回大于等于指定参数的最小整数
var num2 = Math.floor(12.34);//12 返回小鱼等于指定参数的最小整数
var num3 = Math.round(12.34);//13 四舍五入
var num4 = Math.pow(10,2);//10的2次方
var num5 = Math.random();//0-1之间的伪随机数
var num6 = parseInt(Math.random()*10+1);//获取1-10之间的随机数
</script>
全局方法
Global对象中的方法都是全局方法
- parseInt(数据,进制):把指定进
- 制的字符串转化成十进制
- parseInt(“12abc”);//12
- parseInt(“abc12”);//NaN
- isNaN():判断是否非法
把指定进制的字符串转化成十进制
- parseInt()
把十进制转换成其他进制
- number对象的toString方法
var num = new Number(6);
num.toString(2);//110 十进制6转换成二进制的110
07-07 自定义对象
JS用函数来描述对象
方法一
- 函数描述Person
- 建立Person对象
- 动态添加属性
function Person() {
alert("person run");
}
var p = new Person();
p.name = "Tony";
p.age = 29;
p.show = function() {
alert("show:"+this.name+":"+this.age);
}
p.show();
方法二
- 函数描述Person,参数列表不为空
- 建立Person对象
function Person(name, age) {
this.name = name;
this.age = age;
this.setName = function(name) {
this.name = name;
}
this.setAge = function(age) {
this.age = age;
}
}
var p = new Person("Tony",29);
方式三
- 大括号封装一个实体
- 实体内有键值对
- ”Key”:”Value”
- key可以是字符串,数字等
- Value可以是字符串,数字,函数等
- ”Key”:”Value”
- 调用方式
- 对象.属性
- 对象[“属性”]
var person = {
"name":"Steve","age":31,
"getName";function() {
return this.name;
}
}
alert(pp.age);
复杂的方式三
var myMap
= {
names:[{name1:"aaa"},{myname:"bbb"}]
}
alert(myMap.names[0.name1]);