toString()

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. //创建构造函数,专门来创建对象的
  7. function Person(name,age){
  8. this.name=name;
  9. this.age=age;
  10. }
  11. var per = new Person("Tom",18);
  12. //当我们直接在页面中打印对象时候,事实上输出的是对象的toString()方法的返回值
  13. console.log(per);
  14. console.log(per.toString());
  15. //在原型中寻找
  16. //可以自己添加
  17. per.toString = function(){
  18. return "Hello";
  19. };
  20. //不看到object
  21. per.toString = function{
  22. return "Person[name="+this.name+",age="+this.age
  23. }
  24. console.log(per);
  25. //修改原型
  26. per.prototype.toString = function{
  27. return "Person[name="+this.name+",age="+this.age
  28. }
  29. console.log(per);
  30. </script>
  31. <title>测试</title>
  32. </head>
  33. <body>
  34. </body>
  35. </html>

垃圾回收

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var obj = new object();
  7. obj = null;//不能再操作
  8. //当一个对象没有任何的变量和属性对他进行引用,此时我们将永远无法操作该对象
  9. //js有垃圾自动回收装置
  10. </script>
  11. <title>测试</title>
  12. </head>
  13. <body>
  14. </body>
  15. </html>

数组

数组也是对象
索引(index)-值

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = new Array();
  7. //添加元素
  8. arr[0] = 10;
  9. //如果不存在,不会报错,而是undefined
  10. //获取长度
  11. console.log(arr.length);
  12. //修改长度
  13. arr.length = 10;
  14. //如果小于原长度,会自己删除
  15. arr[arr.length]=6;//在数组最后添加
  16. </script>
  17. <title>测试</title>
  18. </head>
  19. <body>
  20. </body>
  21. </html>

数组字面量

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = [];
  7. //使用字面量创建数组
  8. var arr = [1,2,3,4,5];
  9. var arr2 = new Array(10,20,30);
  10. //区别
  11. arr = [10];//arr[0]=10
  12. arr2 = new Array(10);//长度为10
  13. //数组中的数据类型可以是任何类型也可以是对象
  14. var obj = {name:"Tom"};
  15. arr[arr.length]=obj;
  16. conlose.log(arr[0].name);
  17. </script>
  18. <title>测试</title>
  19. </head>
  20. <body>
  21. </body>
  22. </html>

数组的4种方法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = ["Tom","Jack","Anna"];
  7. arr.push("Rain");//返回值为新的长度
  8. //pop unshift shift
  9. </script>
  10. <title>测试</title>
  11. </head>
  12. <body>
  13. </body>
  14. </html>

forEach

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = ["Tom","Jack","Anna"];
  7. arr.forEach(function(abc){
  8. console.log(a,b,c);
  9. });//(value,index,obj)
  10. //forEach需要一个函数作为参数
  11. //像这种函数叫做回调函数
  12. //浏览器会将遍历的元素以实参的形式传递进来
  13. //会传3个参数,1【当前正在遍历的元素】,2【当前遍历索引】,3【所有元素】
  14. </script>
  15. <title>测试</title>
  16. </head>
  17. <body>
  18. </body>
  19. </html>

slice&&splice

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = ["Tom","Jack","Anna"];
  7. //可以从数组提取选定的元素 切片
  8. var result = arr.slice(0,2);//不会改变原数组
  9. var result = arr.slice(1);
  10. var result = arr.slice(-1);
  11. //可以删除数组指定元素,会影响到原数组,返回值为删除的值
  12. //第一个开始的索引,第二个表示删除的数量
  13. var result = arr.splice(0,2);
  14. var result = arr.splice(0,2,"new","new2");//相当于替换
  15. </script>
  16. <title>测试</title>
  17. </head>
  18. <body>
  19. </body>
  20. </html>

数组去重

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = [1,2,3,4,5,6];
  7. function distinct(arr){
  8. for(var i = 0;i<arr.length;i++){
  9. for(var j = i+1;j<arr.length;j++){
  10. if(arr[i]==arr[j]){
  11. arr.splice(j,1);
  12. j--;
  13. }
  14. }
  15. }
  16. }
  17. </script>
  18. <title>测试</title>
  19. </head>
  20. <body>
  21. </body>
  22. </html>

数组剩余方法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. var arr = [1,2,3,4,5,6];
  7. var arr2 = [1,2,3,4];
  8. //concat() 不会对本身产生影响
  9. var result = arr.concat(arr2);
  10. var result = arr.concat(arr234);
  11. //join() 该方法可以将数组转换为字符串
  12. result = arr.join();//用,链接
  13. result = arr.join('-');//用-链接
  14. //reverse() 反转数组
  15. arr.reverse();
  16. //该方法会直接改变原数组
  17. //sort()
  18. arr.sort();
  19. //即使对于纯数字的数组,使用sort()排序时,也会按照 Unicode编码来排序,所以对数字进排序时,可能会得到错误的结果
  20. //我们可以在sort()添加一个回调函数,来指定排序规则,
  21. //回调函数中需要定义两个形参,
  22. //浏览器将会分别使用数组中的元素作为实参去调用回调函数
  23. //使用哪个元素调用不确定,但是肯定的是在数组中a一定在b前边
  24. //浏览器会根据回调函数的返回值来决定元素的顺序
  25. //如果返回一个大于0的值,则元素会交换位置
  26. //如果返回一个小于0的值,则元素位置不变
  27. //如果返回一个等于0的值,则认为两个元素相等,也不交换位置
  28. arr = [5,4,3];
  29. arr.sort(function(a,b){
  30. if(a>b){
  31. return 1;
  32. }else if (a<=b){
  33. return -1;
  34. }
  35. };//冒泡排序
  36. arr.sort(function(a,b){
  37. return a-b;//升序
  38. return b-a;//降序
  39. }
  40. </script>
  41. <title>测试</title>
  42. </head>
  43. <body>
  44. </body>
  45. </html>

call 和 apply

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. function fun(){
  7. alert("Hello");
  8. }
  9. fun.call();
  10. fun.apply();
  11. //当对函数调用ca11()和app1y()都会调用函数执行
  12. //在调用ca11和app1y可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的this
  13. //call()可以将实参对象后依次传递
  14. //apply()需要将实参封装到数组中统一传递
  15. var obj = {};
  16. function fun(a,b){
  17. console.log(a,b);
  18. };
  19. fun.call(obj,2,3);
  20. fun.apply(obj,[2,3]);
  21. //this的情况:
  22. 1.以函数形式调用时,this永远都是 window
  23. 2.以方法的形式调用时,this是调用方法的对象
  24. 3.以构造函数的形式调用时,this是新创建的那个对象
  25. 4.使用ca11app1y调用时,this是指定的那个对象
  26. </script>
  27. <title>测试</title>
  28. </head>
  29. <body>
  30. </body>
  31. </html>

arguments

在调用函数时,浏览器每次都会传递进两个隐含的参数:
1.函数的上下文对象 this
2,封装实参的对象 arguments
arguments类数组,在调用函数,所传递的实参都会在argumentsh中保存

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script type="text/javascript">
  6. function fun(a,b){
  7. console.log(arguments.length);
  8. console.log(arguments[0]);
  9. console.log(arguments.callee);//当前正在执行的函数对象
  10. };
  11. fun(1,2,3,4);
  12. </script>
  13. <title>测试</title>
  14. </head>
  15. <body>
  16. </body>
  17. </html>