javascript基础,对象和函数(3)

对象

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             /*
 8              * JS中数据类型
 9              *     - String 字符串
10              *  - Number 数值
11              *     - Boolean 布尔值
12              *     - Null 空值
13              *     - Undefined 未定义
14              *         - 以上这五种类型属于基本数据类型,以后我们看到的值
15              *             只要不是上边的5种,全都是对象
16              *     - Object 对象
17              * 
18              * 
19              * 基本数据类型都是单一的值"hello" 123 true,
20              *     值和值之间没有任何的联系。
21              * 
22              * 在JS中来表示一个人的信息(name gender age):
23              *     var name = "孙悟空";
24              *     var gender = "男";
25              *     var age = 18;
26              * 如果使用基本数据类型的数据,我们所创建的变量都是独立,不能成为一个整体。
27              * 
28              * 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。
29              * 
30              * 对象的分类:
31              *     1.内建对象
32              *         - 由ES标准中定义的对象,在任何的ES的实现中都可以使用
33              *         - 比如:Math String Number Boolean Function Object....
34              * 
35              *     2.宿主对象
36              *         - 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
37              *         - 比如 BOM DOM
38              * 
39              *     3.自定义对象
40              *         - 由开发人员自己创建的对象
41              * 
42              */
43             
44             //创建对象
45             /*
46              * 使用new关键字调用的函数,是构造函数constructor
47              *     构造函数是专门用来创建对象的函数
48              * 使用typeof检查一个对象时,会返回object
49              */
50             var obj = new Object();
51             
52             
53             /*
54              * 在对象中保存的值称为属性
55              * 向对象添加属性
56              *     语法:对象.属性名 = 属性值;
57              */
58             
59             //向obj中添加一个name属性
60             obj.name = "孙悟空";
61             //向obj中添加一个gender属性
62             obj.gender = "";
63             //向obj中添加一个age属性
64             obj.age = 18;
65             
66             /*
67              * 读取对象中的属性
68              *     语法:对象.属性名
69              * 
70              * 如果读取对象中没有的属性,不会报错而是会返回undefined
71              */
72             
73             //console.log(obj.gender);
74             //console.log(obj.hello);
75             
76             /*
77              * 修改对象的属性值
78              *     语法:对象.属性名 = 新值
79              */
80             obj.name = "tom";
81             
82             /*
83              * 删除对象的属性
84              *     语法:delete 对象.属性名
85              */
86             delete obj.name;
87             
88             
89             console.log(obj.age);
90 
91         </script>
92     </head>
93     <body>
94     </body>
95 </html>

内容

1.var obj = new Object(); 构造函数是专门用来创建对象的函数。

属性名和属性值

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             var obj = new Object();
 9 
10             /*
11              * 向对象中添加属性
12              * 属性名:
13              *     - 对象的属性名不强制要求遵守标识符的规范
14              *         什么乱七八糟的名字都可以使用
15              *     - 但是我们使用是还是尽量按照标识符的规范去做
16              * 
17              */
18             obj.name = "孙悟空";
19             
20             //obj.var = "hello";
21             
22             /*
23              * 如果要使用特殊的属性名,不能采用.的方式来操作
24              *     需要使用另一种方式:
25              *         语法:对象["属性名"] = 属性值
26              *     读取时也需要采用这种方式
27              * 
28              * 使用[]这种形式去操作属性,更加的灵活,
29              *     在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
30              * 
31              */
32             obj["123"] = 789;
33             obj["nihao"] = "你好";
34             var n = "nihao";
35             //console.log(obj["123"]);
36             
37             /*
38              * 属性值
39              *     JS对象的属性值,可以是任意的数据类型
40              *         甚至也可以是一个对象
41              */
42             
43             obj.test = true;
44             obj.test = null;
45             obj.test = undefined;
46             
47             //创建一个对象
48             var obj2 = new Object();
49             obj2.name = "猪八戒";
50             
51             //将obj2设置为obj的属性
52             obj.test = obj2;
53             
54             //console.log(obj.test.name);
55             
56             /*
57              * in 运算符
58              *     - 通过该运算符可以检查一个对象中是否含有指定的属性
59              *         如果有则返回true,没有则返回false
60              *  - 语法:
61              *         "属性名" in 对象
62              */
63             //console.log(obj.test2);
64             
65             //检查obj中是否含有test2属性
66             //console.log("test2" in obj);
67             //console.log("test" in obj);
68             console.log("name" in obj);
69             
70         </script>
71     </head>
72     <body>
73     </body>
74 </html>

内容

1,如果要使用特殊的属性名,不能采用.的方式来操作,另一种方法,语法:对象["属性名"] = 属性值,  在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性,常用

 
对象字面量
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             //创建一个对象
 9             //var obj = new Object();
10             
11             /*
12              * 使用对象字面量来创建一个对象
13              */
14             var obj = {};
15             
16             //console.log(typeof obj);
17             
18             obj.name = "孙悟空";
19             
20             //console.log(obj.name);
21             
22             /*
23              * 使用对象字面量,可以在创建对象时,直接指定对象中的属性
24              * 语法:{属性名:属性值,属性名:属性值....}
25              *     对象字面量的属性名可以加引号也可以不加,建议不加,
26              *     如果要使用一些特殊的名字,则必须加引号
27              * 
28              * 属性名和属性值是一组一组的名值对结构,
29              *     名和值之间使用:连接,多个名值对之间使用,隔开
30              *     如果一个属性之后没有其他的属性了,就不要写,
31              */
32             var obj2 = {
33                 
34                 name:"猪八戒",
35                 age:13,
36                 gender:"",
37                 test:{name:"沙僧"}
38                 
39             };
40             
41             console.log(obj2.test);
42             
43         </script>
44     </head>
45     <body>
46     </body>
47 </html>

1.使用对象字面量来创建一个对象,var obj = {};

 
函数
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 函数 function
10              *     - 函数也是一个对象
11              *     - 函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)
12              *     - 函数中可以保存一些代码在需要的时候调用
13              *     - 使用typeof检查一个函数对象时,会返回function
14              */
15             
16             //我们在实际开发中很少使用构造函数来创建一个函数对象
17             //创建一个函数对象
18             //可以将要封装的代码以字符串的形式传递给构造函数
19             //var fun = new Function("console.log('Hello 这是我的第一个函数');");
20             
21             //封装到函数中的代码不会立即执行
22             //函数中的代码会在函数调用的时候执行
23             //调用函数 语法:函数对象()
24             //当调用函数时,函数中封装的代码会按照顺序执行
25             //fun();
26             
27             /*
28              * 使用 函数声明 来创建一个函数
29              *     语法:
30              *         function 函数名([形参1,形参2...形参N]){
31              *             语句...
32              *         }
33              */
34             
35             function fun2(){
36                 console.log("这是我的第二个函数~~~");
37                 alert("哈哈哈哈哈");
38                 document.write("~~~~(>_<)~~~~");
39             }
40             
41             //console.log(fun2);
42             //调用fun2
43             //fun2();
44             
45             /*
46              * 使用 函数表达式 来创建一个函数
47              * var 函数名  = function([形参1,形参2...形参N]){
48              *      语句....
49              *  }
50              */
51             
52             var fun3 = function(){
53                 console.log("我是匿名函数中封装的代码");
54             };
55             
56             
57             fun3();
58             
59         </script>
60     </head>
61     <body>
62     </body>
63 </html>

1.实际开发中很少使用构造函数来创建一个函数对象,var fun = new Function("console.log('Hello 这是我的第一个函数');");

2,声明函数,

function 函数名([形参1,形参2...形参N]){
             *          语句...
             *      }
 
3.函数表达式,
* 使用 函数表达式 来创建一个函数
             * var 函数名  = function([形参1,形参2...形参N]){
             *   语句....
             *  }
 
 
函数的参数
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 定义一个用来求两个数和的函数
10              *     可以在函数的()中来指定一个或多个形参(形式参数)
11              *     多个形参之间使用,隔开,声明形参就相当于在函数内部声明了对应的变量
12              *     但是并不赋值
13              */
14             function sum(a,b){
15                 console.log("a = "+a);
16                 console.log("b = "+b);
17                 console.log(a+b);
18             }
19             
20             /*
21              * 在调用函数时,可以在()中指定实参(实际参数)
22              *     实参将会赋值给函数中对应的形参
23              */
24             /*sum(1,2);
25             sum(123,456);*/
26             
27             /*
28              * 调用函数时解析器不会检查实参的类型,
29              *     所以要注意,是否有可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查
30              * 函数的实参可以是任意的数据类型
31              */
32             //sum(123,"hello");
33             //sum(true , false);
34             
35             /*
36              * 调用函数时,解析器也不会检查实参的数量
37              *     多余实参不会被赋值
38              * 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
39              * 
40              */
41             //sum(123,456,"hello",true,null);
42             sum(123);
43             
44         </script>
45     </head>
46     <body>
47     </body>
48 </html>

返回值

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 创建一个函数,用来计算三个数的和
10              * 
11              * 可以使用 return 来设置函数的返回值
12              *     语法:
13              *         return 值
14              * 
15              *     return后的值将会会作为函数的执行结果返回,
16              *         可以定义一个变量,来接收该结果
17              * 
18              *  在函数中return后的语句都不会执行
19              * 
20              *     如果return语句后不跟任何值就相当于返回一个undefined,
21              *     如果函数中不写return,则也会返回undefined
22              * 
23              *     return后可以跟任意类型的值
24              * 
25              */
26             function sum(a , b , c){
27                 //alert(a + b +c);
28                 
29                 var d = a + b + c;
30                 
31                 return d;
32                 
33                 //return undefined;
34                 
35             }
36             
37             //调用函数
38             //变量result的值就是函数的执行结果
39             //函数返回什么result的值就是什么
40             var result = sum(4,7,8);
41             
42             //var result = alert("hello");
43             
44             console.log("result = "+result);
45             
46             
47         </script>
48     </head>
49     <body>
50         
51     </body>
52 </html>
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             /*
 8              * 定义一个函数,判断一个数字是否是偶数,如果是返回true,否则返回false
 9              */
10             
11             function isOu(num){
12                 
13                 return num % 2 == 0;
14             }
15             
16             var result = isOu(15);
17             
18             //console.log("result = "+result);
19             
20             
21             /*
22              * 定义一个函数,可以根据半径计算一个圆的面积,并返回计算结果
23              * 3.14*r*r
24              */
25             function mianji(r){
26                 
27                 return 3.14*r*r;
28                 
29             }
30             
31             result = mianji(5);
32             
33             //console.log("result = "+result);
34             
35             
36             /*
37              * 创建一个函数,可以在控制台中输出一个人的信息
38              *     可以输出人的 name age gender address
39              * 
40              * 实参可以是任意的数据类型,也可以是一个对象
41              *     当我们的参数过多时,可以将参数封装到一个对象中,然后通过对象传递
42              */
43             function sayHello(o){
44                 
45                 //console.log("o = "+o);
46                 console.log("我是"+o.name+",今年我"+o.age+"岁了,"+"我是一个"+o.gender+""+",我住在"+o.address);
47             }
48             
49             //sayHello("猪八戒",28,"高老庄","男");
50             //创建一个对象
51             var obj = {
52                 name:"孙悟空",
53                 age:18,
54                 address:"花果山",
55                 gender:""
56                 
57             };
58             
59             //sayHello(obj);
60             
61             /*
62              * 实参可以是一个对象,也可以是一个函数
63              */
64             
65             function fun(a){
66                 console.log("a = "+a);
67                 //a(obj);
68             }
69             
70             //fun(sayHello);
71             
72             //fun(function(){alert("hello")});
73             
74             fun(mianji(10));
75             
76             /*
77              * mianji()
78              *     - 调用函数
79              *     - 相当于使用的函数的返回值
80              * 
81              * mianji
82              *     - 函数对象
83              *     - 相当于直接使用函数对象
84              */
85             
86         </script>
87     </head>
88     <body>
89     </body>
90 </html>

1.实参可以是任意的数据类型,也可以是一个对象,当我们的参数过多时,可以将参数封装到一个对象中,然后通过对象传递


 
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             function fun(){
 9                 alert("函数要执行了~~~~");
10                 
11                 for(var i=0 ; i<5 ; i++){
12                     
13                     
14                     if(i == 2){
15                         //使用break可以退出当前的循环
16                         //break;
17                         
18                         //continue用于跳过当次循环
19                         //continue;
20                         
21                         //使用return可以结束整个函数
22                         //return;
23                     }
24                     
25                     console.log(i);
26                 }
27                 
28                 alert("函数执行完了~~~~");
29             }
30             
31             //fun();
32             
33             /*
34              * 返回值可以是任意的数据类型
35              *     也可以是一个对象,也可以是一个函数
36              */
37             function fun2(){
38                 
39                 //返回一个对象
40                 return {name:"沙和尚"};
41             }
42             
43             var a = fun2();
44             
45             //console.log("a = "+a);
46             
47             function fun3(){
48                 //在函数内部再声明一个函数
49                 function fun4(){
50                     alert("我是fun4");
51                 }
52                 
53                 //将fun4函数对象作为返回值返回
54                 return fun4;
55             }
56             
57             a = fun3();
58             //console.log(a);
59             //a();
60             fun3()();
61             
62             
63         </script>
64     </head>
65     <body>
66     </body>
67 </html>

1.返回值可以是任意的数据类型,也可以是一个对象,也可以是一个函数


 
立即执行函数(匿名函数)
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             
 9             //函数对象()
10             /*
11              * 立即执行函数
12              *     函数定义完,立即被调用,这种函数叫做立即执行函数
13              *     立即执行函数往往只会执行一次
14              */
15             /*(function(){
16                 alert("我是一个匿名函数~~~");
17             })();*/
18             
19             (function(a,b){
20                 console.log("a = "+a);
21                 console.log("b = "+b);
22             })(123,456);
23             
24         </script>
25     </head>
26     <body>
27     </body>
28 </html>

对象

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 创建一个对象
10              */
11             var obj = new Object();
12             
13             //向对象中添加属性
14             obj.name = "孙悟空";
15             obj.age = 18;
16             
17             //对象的属性值可以是任何的数据类型,也可以是个函数
18             obj.sayName = function(){
19                 console.log(obj.name);
20             };
21             
22             function fun(){
23                 console.log(obj.name);
24             };
25             
26             //console.log(obj.sayName);
27             //调方法
28             obj.sayName();
29             //调函数
30             //fun();
31             
32             /*
33              * 函数也可以称为对象的属性,
34              *     如果一个函数作为一个对象的属性保存,
35              *     那么我们称这个函数时这个对象的方法
36              *     调用这个函数就说调用对象的方法(method)
37              * 
38              * 但是它只是名称上的区别没有其他的区别
39              * 
40              */
41             
42             var obj2 = {
43                 
44                 name:"猪八戒",
45                 age:18,
46                 sayName:function(){
47                     console.log(obj2.name);
48                 }
49                 
50             };
51             
52             obj2.sayName();
53             
54             
55             
56         </script>
57     </head>
58     <body>
59     </body>
60 </html>

1.对象的属性值可以是任何的数据类型,也可以是个函数

 
待续。。。
 
 
原文地址:https://www.cnblogs.com/fsg6/p/12758958.html