JS笔记(三):数组、函数、类

2018-07-09 13:47:14来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

(一) 数组

 1 //创建数组
 2 var the_array = [1,2,3,4,'5']
 3 
 4 console.log(the_array[0]) //读取索引为0的数据
 5 the_array[5] = '赋值' //写数据
 6 
 7 //在数组末尾添加一个元素,,允许添加多个数据,例如:the_array.push('1','2')
 8 the_array.push('末尾添加一个数据')
 9 console.log(the_array)
10 //pop删除数组末尾的数据并返回,和PYTHON列表的POP类似(不同的是JS只能删除末尾的数据)
11 //另外还有shift()和unshift(),shift()删除,unshift()添加1个或多个元素。不同的是,这2个方法操作的数据数组头部的元素
12 console.log(the_array.pop())
13 //Array.join()连接所有元素并返回一个字符串,都差不多
14 console.log(the_array.join())
15 A = the_array.join()
16 //String.split()则将字符串拆分为数组
17 console.log(A.split(','))
18 //另外还有,Array.sort()排序,Array.slice()切片 (例如A.slice(0,3))

 

(二) 函数调用和方法调用

 1 //定义一个函数
 2 function f(x,y) {
 3     return x*y
 4 }
 5 //调用函数
 6 var x = f(1,2)
 7 console.log(x)
 8 //创建对象
 9 var the_obj = {}
10 //给对象the_obj定义一个名为m()的方法
11 the_obj.m = f
12 //看输出可以发现,对象the_obj的属性m的值是一个函数,这个时候称m()是对象the_obj的一个方法
13 console.log(the_obj)
14 //调用对象the_obj的方法m()
15 console.log(the_obj.m(1,2))

 

(三) 类

 1 //通过工厂函数定义一个类
 2 function people(pename,gender,age,hobby) {
 3     //通过括号里的(people.methods)和下面13行的people.methods对象定义类公有的方法(行为)
 4     //这里创建对象的时候,也可以用自己自定义的函数
 5     var r = new Object(people.methods)
 6     r.pename = pename
 7     r.gender = gender
 8     r.age = age
 9     r.hobby = hobby
10     return r
11 }
12 //定义该类事物共同的行为(类的方法)
13 people.methods = {getName:function () {return this.pename},
14     getMultiple:function (x) {return x*x}
15 }
16 var zs = people('张三','男','1000','修道')
17 console.log(zs)
18 console.log(zs.getName())
19 console.log(zs.getMultiple(2))

 1 //通过构造函数定义类
 2 //这里遵循一个常见的编程约定,定义构造函数即是定义类,并且类名首字母大写
 3 //而普通的函数和方法都是首字母小写
 4 function People(pename,gender,age,hobby) {
 5     this.pename = pename
 6     this.gender = gender
 7     this.age = age
 8     this.hobby = hobby
 9     
10 }
11 //属性名必须是prototype
12 //被所有People对象继承
13 People.prototype = {getName:function () {return this.pename},
14     getMultiple:function (x) {return x*x}
15 }
16 
17 var zs = new People('张三','男','1000','修道')
18 console.log(zs)
19 console.log(zs.getName())
20 console.log(zs.getMultiple(2))

(三) 类的继承

 1 //通过构造函数定义类
 2 function People(pename,gender,age,hobby) {
 3     this.pename = pename
 4     this.gender = gender
 5     this.age = age
 6     this.hobby = hobby
 7 
 8 }
 9 //属性名必须是prototype
10 //被所有People对象继承
11 People.prototype = {getName:function () {return this.pename},
12     getMultiple:function (x) {return x*x}
13 }
14 
15 
16 //仅定义子类
17 function Boy() {
18     //仅链接到父类
19     //调用父类的构造函数来初始化对象
20    People.apply(this,arguments)
21 
22 }
23 //将Boy设置为People的子类
24 Boy.prototype = new People()
25 Boy.prototype.constructor = Boy
26 
27 //重写父类的getName()方法
28 Boy.prototype.getName = function () {return this.age}
29 
30 var the_boy = new Boy('张三','男','1000','足球')
31 
32 console.log(the_boy)
33 console.log(the_boy.getMultiple(2))
34 console.log(the_boy.getName())

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JS定时器和单线程异步特性

下一篇:ECMAScript面向对象术语