单信js——基础部分

  • 数据类型
    字符串
    数字
    布尔值
    undefined
    null
    数组
    函数
    对象
    变量根据值类型分类,包含两种:基本类型值和引用类型值。
    基本类型值就是简单的数据。而引用类型值指的更多是由多个值构造的复杂对象。

常见的基本类型有:Undefined(默认)、Null(回收资源)、Boolean、Number和String。
基本类型保存在栈内存中,在内存中占有固定大小的空间,是直接对值的操作。
基本类型的值复制拷贝后修改任意一个,对另一个不会造成影响。

引用类型的值则是保存在内存中的对象,保存在堆内存中。
变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,由于引用类型大小不固定(比如数组是可以动态增加的),不能保存在栈内存当中,但是它们的内存地址是固定的存储在栈内存当中。当查询引用类型的变量时,就首先从栈中读取内存地址,然后“顺藤摸瓜”地找到保存在堆中的值。这种方式一般称为按“引用”访问,因为我们操作的不是实际值,而是被那个值所引用的对象。
当一个变量向另一个变量复制引用类型值时,把值分配到新空间,但是值的副本只是一个指向存储在堆中的一个对象,最终修改的是同一个对象。

typeof用来确定一个变量是字符串、数字、布尔,还是undefined。
语法为: var result = typeof abc;
instanceof用来确定一个引用类型是一个什么类型的对象。
语法为: var result = aaa instanceof Array/String/Function;

var a='hello';
console.log(typeof a); //string

var arr=[];
var fn=function(){};
console.log(arr instanceof Array); //true
console.log(fn instanceof Function); //true

  • 数组
    arr=新的数组;
    arr[下标]=新的值;
    arr.push();
    arr.unshift();
    arr.pop();
    arr.shift();

数组元素的删除
arr.splice(索引,删除的元素个数);
arr=null;

遍历数组【掌握】
for(var i=0; i<=arr.length; i++){ }
arr.forEach((value,index)=>{ });

  • 对象
    //定义对象
    var obj=new Object();
    var obj={};

//添加属性和方法
obj.属性名或方法名=值;
obj.name='张三疯';
obj.showName=function(){
console.log(this.name);
}

//使用属性和方法【掌握】
obj.name; //第一种,用.符号调用属性(最常用)
obj['name']; //第二种,动态属性

  • 函数
    //定义函数
    function 函数名(形式参数1,形式参数2,形式参数n){
    //函数体
    return 值;
    return [值,值]; //将返回值转换成数组即可返回多个值
    }

//定义匿名函数
var fn=function(){
};

//实例化一个函数对象
var fn=new Function();

//调用函数: 将函数的返回值放在函数的调用处
fn();

如果函数没有返回值,默认返回undefined
function foo() {
return
{ name: 'foo' };
}
foo(); // undefined
注意return语句的一个大坑,如果把return语句拆成两行,相当于return undefined,下面一句已经不执行了。

允许实参个数和形参个数不一致。
函数中的内置对象arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。
利用arguments,你可以获得调用者传入的所有参数。实际上arguments最常用于判断传入参数的个数。

  • 结构语句if else
    其中else语句是可选的。如果语句块只包含一条语句,那么可以省略{}
    省略{}的危险之处在于,如果后来想添加一些语句,却忘了写{},就改变了if...else...的语义,else后的第二句已经不在else的控制范围了

  • DOM文档对象模型
    //查(查询、获取)
    document.getElementById(ID);
    document.getElementsByName(NAME);
    document.getElementsByTagName(标签名);
    document.getElementsByClassName(类名);
    document.getAttribute('属性名'); //获取指定的属性值
    document.querySelector('h1'); //HTML5提供的新的DOM API

//新增
var h1=document.createElement('h1'); //在内存中创建一个DOM元素
div.appendChild(h1); //将内存中创建好的DOM元素添加到DIV上

//修改
div.className='新的值'; //修改属性值
div.innerHTML=HTML的值; //修改内容
div.innerText='';

//删除
div.removeChild();

//事件绑定【掌握】,事件三要素:事件源、事件类型、事件处理函数
<input type="button" onclick="fn()"/>

btn.onclick=function(){
}

btn.addEventListener('click',function(){
});

  • BOM浏览器对象模型
    BOM就是 window对象:
    window.alert();
    window.setTimeout(); //超时执行,只执行一次
    window.setInterval(); //按周期执行函数,无限次执行
    window.clearInterval(); //清除周期执行函数
    window.document //DOM对象
    window.history //历史对象
    window.location //地址栏对象
    window.onload=function(){};

  • JSON是一个轻量级的数据交换格式,天然就是JS的对象。
    JSON: {"name":"张三疯","age":18}
    数据包含在大括号内
    每一组数据分为键值对,用 : 隔开
    键名必须是一个字符串,用 " " 引起来
    值可以是任意类型,如:数字、字符串、布尔值、数组、对象
    多组数据之间使用 , 隔开
    规范数据格式,让数据在接收到以后使用便捷

1. 为什么要解析JSON?
因为JSON是一种数据交换格式,在正常使用时由后端将数据传到前端,前端接收到的数据会是一个字符串。
JSON的属性名称(和字符串类型的值)要求以“双引号”包裹
JS对象字面量:  {name:”小强”}
JSON:  {“name”:”小强”}

2. JSON的转换(解析)
1) 将JSON格式字符串转换成对象【掌握】
因为JSON 只是一种文本字符串
var 对象变量=JSON.parse(字符串)
用途:通常用于将接收到的数据(字符串形式)转换成对象进行使用

2) 将对象(任意对象或数组)转换成字符串【掌握】
var 字符串=JSON.stringify(对象或数组);
用途:通常用于将数据转换成字符串以后发送到服务器存储到数据库
var obj={"name":"张三疯","age":18};
//将对象转换成字符串
var str=JSON.stringify(obj);
console.log(typeof str,str);  //string {"name":"张三疯","age":18}

//将字符串转换成对象
var data=JSON.parse(str);
console.log(typeof data,data);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。