< 笔记 > JavaScript - 07 JavaScript 对象

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类型

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
    • 根据字符找角标
      • 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可以是字符串,数字,函数等
  • 调用方式
    • 对象.属性
    • 对象[“属性”]
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]);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } ul { list-style: none; } .mi { position: relative; width: 223px; margin: 100px auto; } .mi input { width: 223px; height: 48px; padding: 0 10px; font-size: 14px; line-height: 48px; border: 1px solid #e0e0e0; outline: none; } .mi .search { border: 1px solid #ff6700; } .result-list { display: none; position: absolute; left: 0; top: 48px; width: 223px; border: 1px solid #ff6700; border-top: 0; background: #fff; } .result-list a { display: block; padding: 6px 15px; font-size: 12px; color: #424242; text-decoration: none; } .result-list a:hover { background-color: #eee; } </style> </head> <body> <div class="mi"> <input type="search" placeholder="小米笔记本" /> <ul class="result-list"> <li><a href="#">全部商品</a></li> <li><a href="#">小米11</a></li> <li><a href="#">小米10S</a></li> <li><a href="#">小米笔记本</a></li> <li><a href="#">小米手机</a></li> <li><a href="#">黑鲨4</a></li> <li><a href="#">空调</a></li> </ul> </div> <script> // 获取元素 const input = document.querySelector("[type=search]"); const ul = document.querySelector(".result-list"); // 监听事件 获取焦点 input.addEventListener("focus", function () { ul.style.display = "block"; // 添加一个带有颜色边框的类名 input.classList.add("search"); }); // 监听事件 失去焦点 input.addEventListener("blur", function () { ul.style.display = "none"; // 移除 input.classList.remove("search"); }); </script> </body> </html> 鼠标点击下拉框里面的内容时,上面的搜索框出现鼠标点击的内容
07-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值