JS高级01_类型、对象、函数、Git基本操作
1. 数据类型的分类和判断
1). 基本(值)类型
Number ----- 任意数值 -------- typeof
String ----- 任意字符串 ------ typeof
Boolean ---- true/false ----- typeof
undefined --- undefined ----- typeof/===
null -------- null ---------- ===
2). 对象(引用)类型
Object ----- typeof/instanceof
Array ------ instanceof
Function ---- typeof/instanceof
基本(值)类型(赋值的时候 值传递)
- Number: 任意数值
- String: 任意文本
- Boolean: true/false
- undefined: undefined
- null: null
对象(引用)类型(赋值的时候 引用传递)
Object: 任意对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19var obj = {name : 'kobe'};
//obj是一个变量在栈里面 指向一个 在堆里的对象的 地址。=后面是一个对象的值
var a = null;
a = 123;
var b = a;//值传递 因为此处把a指向的,即一个值赋值给了b
b = 234;//b就改值了,不关a的事
console. log(a); // 123
var obj = {name: "kobe"};
var obj2 = obj;//因为是地址的传递 指向堆里面的对象的地址了
obj2.name = 'wade';//然后此处直接指人家里,把人名改了
console.log(obj);//wade
var arr = [12,3,4];
var arr2 = arr;//引用传 arr2[1]= 234;
console.log(arr); // [12,234,4]Array: 特别的对象类型(下标/内部数据有序)
Function: 特别的对象类型(可执行)
typeof:检测数据类型
- 可以区别: string number booLean undefined object(null、array也是o) function
- 不能区别: null与对象, 数组与一般对象
instanceof
1
A instanceof B 判断A是否是B的实例- 专门用来判断对象数据的类型: Object, Array与Function
===
- 可以判断: undefined和null
undefined代表没有赋值,未定义
null代表赋值了, 只是值为null
1
2console.log(null == undefined); //true undefined来自于null
console.log(null=== undefined); // false 类型不一样
- var a = null //a将指向一个对象, 但对象此时还没有确定
- a = null //让a指向的对象成为垃圾对象
- 严格区别变量类型与数据类型?
- js的变量本身是没有类型的, 变量的类型实际上是变量内存中数据的类型
- 变量类型:
- 基本类型: 保存基本类型数据的变量
- 引用类型: 保存对象地址值的变量
- 数据对象
- 基本类型
- 对象类型
2. 数据,变量, 内存的理解
1 | |
1). 什么是数据?
在内存中可读的, 可传递的保存了特定信息的'东东'
一切皆数据, 函数也是数据
在内存中的所有操作的目标: 数据
2). 什么是变量?
在程序运行过程中它的值是允许改变的量
一个变量对应一块小内存, 它的值保存在此内存中
3). 什么是内存?
内存条通电后产生的存储空间(临时的)
一块内存包含2个方面的数据
内部存储的数据
地址值数据
内存空间的分类
栈空间: 全局变量和局部变量
堆空间: 对象
4). 内存,数据, 变量三者之间的关系
内存是容器, 用来存储不同数据
变量是内存的标识, 通过变量我们可以操作(读/写)内存中的数据
3. 对象的理解和使用
1). 什么是对象?
多个数据(对象)的集合
用来保存多个数据(对象)的容器
2). 属性组成:
属性名 : 字符串(标识)
属性值 : 任意类型
3). 属性的分类:
一般 : 属性值不是function 描述对象的状态
方法 : 属性值为function的属性 描述对象的行为
4). 特别的对象
数组: 属性名是0,1,2,3之类的索引
函数: 可以执行的
5). 如何操作内部属性(方法)
对象.属性名 =
对象['属性名'] = 属性名有特殊字符/属性名是一个变量
1 | |
1 | |
4. 函数的理解和使用
1). 什么是函数?
用来实现特定功能的, n条语句的封装体
只有函数类型的数据是可以执行的, 其它的都不可以
2). 为什么要用函数?
提高复用性
便于阅读交流
3). 函数也是对象
instanceof Object===true
函数有属性: prototype
函数有方法: call()/apply()
可以添加新的属性/方法
4). 函数的调用
1一般函数 : 直接调用 函数自调用 === window.函数调用
2构造函数 : 通过new调用 实例化对象。this指向的当前构造函数的实例对象。
构造函数名可以是小写。但是一般构造函数都是首字母大写
function person(name,age) {
this.name = name;
this.age = age;
this.eat = function () iconsole.log( '吃东西");}
}
var person1 = new Person( ' kobe' ,42);
var person2 = new Person( " wade' ,38);|
3回调函数 : callback 事件的回调 定时器的回调
4call apply 强制改变this,我理解即指定对象调用函数。
1 | |
5). 函数中的this
this是什么?
1 一个关键字, 一个内置的引用变量
2 this本身是一个内置的变量 此变量用于指向一个对象
3 this有两种:
- 全局this = window
两种的例子:
1 | |
- 局部(函数)this = 调用此函数的对象;
构造函数this = 当前构造函数的实例对象
1 | |
另:new操作符语法: new function( );
1.创建空对象
2.执行函数
3.确认this 的指向 指向堆中的哪里: this —>创建空对象
4.返回执行的结果
可以拿一个构造函数来理解
1 | |
4 特殊this:call apply 强制修改this
1 | |
显式指定谁: obj.xxx()
通过call/apply指定谁调用: xxx.call(obj)
不指定谁调用: xxx() : window
回调函数: 看背后是通过谁来调用的: window/其它
6). 匿名函数自调用(立即调用):IIEF
特点:
特点:
1.只执行一次
2.什么时候执行:代码执行到函数位置立即执行
3.内部的数据是私有的
-----------------
//内部的数据是私有的
(function () {
var num = 123;
})()
console.Log(num);//报错,num未定义。因为看不到自调用函数里面数据了
-----------------
(function(){
//实现代码
})()
专业术语为: IIFE (Immediately Invoked Function Expression) 立即调用函数表达式
7). 回调函数的理解△
1什么函数才是回调函数?
你定义的
你没有调用
但它最终执行了(在一定条件下 或某个时刻) 回头调用!!
2常用的回调函数
dom事件回调函数(如按钮)
定时器回调函数
ajax请求回调函数(后面讲解)
生命周期回调函数(后面讲解)
git管理项目
1). 创建本地仓库
创建.gitignore配置文件
git init
git add *
git commit -m "xxx"
2). 创建github远程仓库
New Repository
指定名称
创建
3). 将本地仓库推送到远程仓库
git remote add origin https://github.com/zxfjd3g/170612_JSAdvance.git 关联远程仓库
git push origin master
4). push本地的更新
git add *
git commit -m "xxx"
git push origin master
5). 克隆github上的项目:
git clone https://github.com/zxfjd3g/170612_JSAdvance.git
6). pull远程的更新
git pull origin master
7). 撤消本地修改
git status 查看变化
git checkout -- xxx文件 撤消指定文件的修改
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!