关键词:JavaScript变量、基本类型、引用类型、instanceof、typeof、Object、Array
学习思路:学习原型链,需要先了解变量的知识,然后学习对象的创建、对象的原型,最后才是继承的关系
1. 变量的基本概念
基本类型 | 引用类型 | 概念 | 简单数据段 | 可能由多个值构成的对象 | 数据类型 | Undefined, Null, Boolean, Number, String | Object | 赋值 | var name = 13 | var name = new Object() name.age = 13 | 复制引用 | Var num2 = num1 num1和num2相互独立,改变num1不影响num2 | var obj2 = obj1 改变obj1会影响obj2,实际引用的相同对象 |
---|
2. 基本类型
数据类型 | 英文表达式 | typeOf 返回结果 | 未定义 | undefined | "undefined" | 布尔值 | Boolean | "boolean" | 字符串 | String | "string" | 数值 | Number | "number" | Null | Null | "object" | 函数 | function | "function" |
---|
3. 引用类型
3.1 检测引用类型 - instanceof
使用typeof并不能检测出具体是什么引用类型(object, array, date.....)
例如:null和object的typeof值都是object,无法区分
- 判断具体类型 - instanceof - 返回true/false
// instanceof样例
var o = new Object()
alert(o instanceof Array)
alert(o instanceof Constructor)
alert(o instanceof RegExp)
- 对于某些类型,同样可用自身的类型检测方法
// Array类型 - 检测方法:Array.isArray()
alert(Array.isArray(colors)) // true
3.2 Object类型
// 创建Object
// 1. new一个Object对象,使用Object构造函数,并添加属性
var person = new Object()
person.name = "Cindy"
person.age = 27
// 2. 对象字面量法 - 用JSON对象的方式直接创建
var person = {
name: "Cindy",
age: 27
}
// 备注:对象字面量法不设置属性值创建时,同 new Object() 相同
var person = {} // 和 new Object() 相同
// 对象访问方法
person.name // 输出:Cindy
person["name"] // 输出:Cindy - 方括号传入string的方法便于传入变量,以动态获取对象中不同值
3.3 Array类型
// 创建方法
// 1. new一个Array对象,使用Array构造函数
var colors = new Array()
var colors = new Array(20)
var colors = new Array('red', 'blue', 'yellow')
var colors = Array("Gray") // 可以不用new
// 2. 数组字面量法
var colors = []
var colors = ['red', 'blue', 'yellow']
// 对象访问方法
// 1. Array对象包含length属性
alert(colors.length) // 3
// 2. Array对象可用下角标引用
colors[0] = "gray"
alert(colors[0]) // 输出:“gray”
3.4 Date类型
- 推荐momentjs库进行时间日期转换
// 创建一个日期对象,自动获取当前日期
var now = new Date()
// 接收日期表示字符串,转换为相应日期毫秒数
Date.parse("6/13/2008")
// 日期格式化
toDateString() // 以特定实现的格式显示星期几、月、日和年
toTimeString() // 以特定实现的格式显示时、分、秒和时区
toLocaleDateString() // 以特定于地区的格式显示星期几、月、日和年
toLocaleTimeString() // 以特定于地区的格式显示时、分、秒
toUTCString() // 以特定实现的格式显示UTC日期
3.5 RegExp类型
使用类似Perl语法,创建正则表达式
var expression = / pattern / flag
flag - 表名正则表达式行为:
- g - 全局模式,应用于所有字符串
- i - 不区分大小写
- m - 多行模式,到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项
3.6 Function类型(本章节中简要说明,将会在闭包章节中详细说明)
3.6.1 函数声明方法
// 函数声明 - 语法:
function funName (arg0, arg1, arg2) {
// 函数体
}
// 函数声明提升 - 调用语句可以在函数声明之前,因为执行前代码会先读取函数声明
sayHi()
function sayHi() {
alert('Hi')
}
3.6.2 函数表达式法
// 函数表达式 - 语法 - 将一个匿名函数赋值给一个变量
// 匿名函数:function没有命名
var funName = function (arg0, arg1, arg2) {
// 函数体
}
// 函数表达式不能进行函数声明提升,调用要在表达式后面
var sayHi = function () {
alert('Hi')
}
sayHi()
3.6.3 关于function需要注意的问题:
- function指针引用
// 指针引用
var sum2 = sum1 // sum1和sum2均指向同一个function内容
- function没有重载
// 用指针解释function没有重载
var add1 = function (num) { return num + 100 }
add1 = function(num) { return num + 200 } //创建第二个函数的时候,实际上覆盖了第一个引用,故没有重载
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!