(一) 数组

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

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

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

(三) 类

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

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

(三) 类的继承

 //通过构造函数定义类
function People(pename,gender,age,hobby) {
this.pename = pename
this.gender = gender
this.age = age
this.hobby = hobby }
//属性名必须是prototype
//被所有People对象继承
People.prototype = {getName:function () {return this.pename},
getMultiple:function (x) {return x*x}
} //仅定义子类
function Boy() {
//仅链接到父类
//调用父类的构造函数来初始化对象
People.apply(this,arguments) }
//将Boy设置为People的子类
Boy.prototype = new People()
Boy.prototype.constructor = Boy //重写父类的getName()方法
Boy.prototype.getName = function () {return this.age} var the_boy = new Boy('张三','男','1000','足球') console.log(the_boy)
console.log(the_boy.getMultiple(2))
console.log(the_boy.getName())

JS笔记(三):数组、函数、类的更多相关文章

  1. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  3. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  4. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  5. JS学习三(函数)

    [函数的声明格式] 1.函数的声明格式: function 函数名(参数1,参数2,...){ 函数体代码 return 返回值: } 函数的调用: ① 直接调用:函数名(参数1的值,参数2的值,.. ...

  6. es6 入坑笔记(三)---数组,对象扩展

    数组扩展 循环 arr.foreach(){ //回调函数 function(val,index,arr){ //val:当前读取到的数组的值,index:当前读取道德数组的索引,arr:当前的数组名 ...

  7. 【js笔记】数组那些事[0]

    js中数组是一个特殊的对象,索引是它的属性,整数索引在内部被转化为字符串类型. 1 数组的创建 new关键字方法:var arr=new Array() var arr=new Array(10); ...

  8. python学习笔记三:函数及变量作用域

    一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encod ...

  9. cocos2dx打飞机项目笔记三:HeroLayer类和坐标系

    HeroLayer类主要是处理hero的一些相关东西,以及调用bulletLayer的一些方法,因为子弹是附属于hero的~~ HeroLayer 类的成员如下: class HeroLayer : ...

  10. JS contcat() 连接数组 函数

    语法: arrayObject.concat(arrayX,arrayX,......,arrayX) 1.把元素添加到数组中 arr.concat(a,b,c);2.把数组连起来 arr.conca ...

随机推荐

  1. spring boot 集成 Filter 的两种方式

    两种方式:(两种方式同时存在时,@Bean优先@ServletComponentScan实例化,生成两个对象) 1)@ServletComponentScan注解+@WebFilter注解 2)@Be ...

  2. js设计模式小结

    1 构造函数模式 var Person = function(name){ this.name = name; this.getName = function(){ console.log(this. ...

  3. BizTalk 2010/2013 EDI B2B项目实践(1)

    BizTalk 2010/2013 EDI B2B项目实践(1) BizTalk开发标准EDI B2B是件非常容易的事情,但对于初学者可能有很多专业术语不太理解,不知道如何下手,我之前开始学的时候虽然 ...

  4. rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...

  5. Struts2之ValueStack、ActionContext

    今天在看Action获取Resquest.Response时,发现了一个词:值栈.于是今天一天都在看,了解了值栈不仅能知道Action怎么获取request.response等这些,还会了解OGNL语 ...

  6. 分部类,分部方法 - 修饰符partial

    一.分部类 什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多个源文件中,每个源文件只包含类型定义的一部分. 当使用自动生成的源时,无须重新创建源文件便可将代码添加到类中.Visual Stu ...

  7. VS2017进程为idXXXX 无法启动解决方案

    1.对无法启动项目的 .csproj 后缀文件用记事本打开 找到<WebProjectProperties>xx</WebProjectProperties> 删掉 让后 重新 ...

  8. 在visual studio中设置点击左边选项卡中的类文件,右侧解决方案跳到对应的文件

    在visual studio中如何设置点击左边选项卡中的类文件,右侧解决方案跳到对应的文件?比如说,VS上方的选项卡文件较多,我点击选项卡上的任一文件,解决方案中对应的文件突出显示           ...

  9. 如何对付运行时可能为 null 的 Record Type

    在 F# 中,Record Type 是无法表达 null 语义的,例如,一个 Record 变量不能够使用 null 字面量赋值,接收 nullable(这里并不是指 BCL 中的 Nullable ...

  10. IQuerable与IEnumable的区别

    核心区别: IQueryable该接口会把查询表达式先缓存到表达式树Expression 中,只有当真正用到数据的时候(例如 遍历 ),才会由IQueryProvider解析表达式树,生成sql语句执 ...