JavaScript 入门指南(二)JavaScript 的数据类型和 JSON 数据
JavaScript 的数据类型
基本数据类型
-
undefined 类型:只有一个值 undefined(未定义),它是一个保留字。表示变量虽然已经声明,但却没有赋值
(图片来源网络,侵删) -
number 类型:所有的整数和小数
注:NaN 是一个特殊的数字值(typeof NaN的结果为number),是not a number的缩写,表示不是一个合法的数字。不是数字的字符串通过函数进行数据类型转换为数字,结果就是 NaN
-
string 类型:所有被单引号和双引号包裹的字符串
-
boolean 类型:布尔值,只有两个值 true 和 false
-
object 类型:所有对象的数据类型
注:
(图片来源网络,侵删)-
可以使用关键字 typeof 可以查看变量的数据类型
-
null 类型:只有一个值 null(空),它是一个保留字。表示没有值,用于定义空的或不存在的引用。
注意:
- 空值不等同于空字符串 “” 或 0
- undefined 类型就是使用 null 演化而来,所以 undefined == null 为 true
- undefined 的数据类型是 undefined,null 的数据类型是 object,所以 undefined === null 为 false
引用数据类型(对象)
- js 语言是基于对象的编程语言。在 js 中没有类,里边使用的对象都是使用函数模拟出来的,包含了一些内置对象
- 传址:在赋值过程中,引用数据类型的变量实际上存储的是数据的地址(对数据的引用),而不是原始数据或者数据的拷贝。
- 注意:所有的对象都是 object 对象,包括 NaN、null
JavaScript 创建对象的 3 种方式:
-
方式1:通过对象字面量构造,其 prototype(原型、蓝本)指向 Object.prototype
var 对象变量名={ 属性名:属性值, 方法名:function([参数列表]){ 方法体 } } var person = { name: "Tom", age: 18 } console.log(person) //{name: 'Tom', age: 18}
-
方式2:通过构造函数构造,其 prototype(原型、蓝本)指向其构造函数的 prototype 属性指向的对象
(图片来源网络,侵删)var 对象变量名 = new Object(); 对象变量名.属性名 = 属性值; 对象变量名.方法名 = function([参数列表]){ 方法体 } var person = new Object(); person.name = "张三"; person.age = 18; console.log(person) //{name: 'Tom', age: 18}
自定义构造函数构造
// 方式1: function 构造函数([参数列表]){ this.属性名=属性值(或参数列表中参数); this.方法名=function([参数列表]){ 方法体 }; } var 对象名 = new 构造函数([参数列表]); // 方式2:原型法 function 对象创建器(){}; 对象创建器.prototype.属性=属性值; 对象创建器.prototype.方法=function([参数列表]){ 方法体 }; var 对象名 = new 对象创建器([参数列表]); // 方式1与方式2混合 function 构造函数([参数列表]){ this.属性1=属性值; ...; this.属性N=属性值; }; } 对象创建器.prototype.方法=function([参数列表]){ 方法体 }; var 对象名 = new 构造函数([参数列表]);
-
方式3:通过 Object.create 构造,其 prototype(原型、蓝本)指向 Object.create 的参数
var person = { name: "Tom", age: 18 } var person = Object.create(person) console.log(person) //{} console.log(person.__proto__) //{name: 'Tom', age: 18}
总结:第 1 种创建方式其实就是第 2 种的语法糖,过程一致。第 3 种方式通过 Object.create 来创建的对象并不会继承其父对象的属性和方法,只能通过原型链来访问
常用内置对象
String:字符串
String 对象用于处理文本(字符串)
String 对象中定义了一些处理字符串的函数
-
创建 String 对象的方式(4 种方式):
var str = new String("字符串"); var str = "字符串"; var str = '字符串'; var str = `字符串`;
注:
-
使用反向单引号创建字符串,可以使用 ${} 引用其他字符串对象
var str1 = 'a-b-c'; var str2 = `hello${str1}`; // helloa-b-c
-
String 对象常用属性:
-
length :字符串的长度
'aaa'.length // 3
-
String 对象常用函数:
-
charAt() :返回在指定索引的字符
// 使用length属性和charAt方法遍历字符串 for(let i=0; i alert(str2.charAt(i)); } // 升序 return a-b; })); // 排序后:1,2,3,4,5 console.log("排序后: " + arr3.sort(function (a, b) { // 降序 return b-a; })); //排序后:5,4,3,2,1 "key1":value,"key2":value,"key3":value...},{"key1":value,"key2":value,"key3":value...}] {"key1":value,"key2":[value,value,value...],"key3":value...} {"key1":value,"key2":[{"key1":value,"key2":value,"key3":value...},value,value...],"key3":value...} "name":"柳岩","age":18}; //alert(typeof json);//object //JSON.stringify(object) 把json对象转为字符串 var str = JSON.stringify(json); //alert(str);//{"name":"柳岩","age":18} //alert(typeof str);//string //alert(str.name);//undefined //JSON.parse(string) 把字符串转为json对象 var obj = JSON.parse(str); alert(typeof obj); //object alert(obj.name+"\t"+obj.age);//柳岩 18
-
-
-
-
-
-
还没有评论,来说两句吧...