JS学习笔记-基础理论+数组
来源:互联网 发布:金石计价软件公司地址 编辑:程序博客网 时间:2024/06/05 20:38
this:
this指向的是一个对象,这个对象为函数执行的上下文对象。
根据函数的调用方式的不同,this会指向不同的对象。
1.以函数的形式调用时,this永远都是window
2.以方法的形式调用时,this就是调用方法的那个对象
3.当以构造函数的形式调用时,this就是新创建的那个对象
--------------------------------------------------------------------------------------------------
使用工厂方法莫模式创建对象,对象的创建永远都是 Object
var obj = new Object();
使用构造函数创建一个对象。
注:构造函数和普通函数的区别就是调用方式的不同,普通函数是直接调用,构造函数需要使用new关键字来调用。
var test = new Test()
function Test(){
}
构造函数的执行流程:
1.立刻创建一个新的对象
2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
3.逐行执行函数中的代码
4.将新建的对象作为返回值返回
使用instanceof可以检查一个对象是否是一个类的实例。
使用同一个构造函数创建的对象,称为一类对象,也将一个构造函数成为一个类。通过一个构造函数创建的对象,称为是类的实例。
一模一样的方法完全可以使所有的对象共享同一个方法。
-------------------------------------------------------------------------------------------------
原型 prototype
我们所创建的每一个函数,解析器都会向函数中添加一个属性 prototype,这个属性对应着一个对象,这个对象就是我们所谓的原型对象。
如果函数作为普通函数调用prototype没有任何作用。
当函数以构造函数调用时,它所创建的对象中都会有一个隐含的属性,指向该构造函数的原型对象,我们可以通过__proto__来访问该属性
原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型对象,我们可以将对象中共有的内容,统一设置到原型对象中。
当我们访问对象的一个属性或方法时,它会先在对象自身中寻找,如果有则直接使用,如果没有则会去原型i对象中寻找,如果找到则直接使用。
以后我们创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数的原型对象中,这样不用分别为每一个对象添加,也不会影响到全局作用域,就可以使每个对象都具有这些属性和方法。
使用关键字 in 可以检查对象中是否包含某个属性,如果对象中没有但是原型中有,也会返回true!!!
可以使用对象的 hasOwnProperty() 来检查对象自身中是否有该属性!!!
原型对象也是对象,所以它也有原型,当我们使用一个对象的属性或方法时,会先在自身中寻找,自身中如果有,则直接使用,如果没有则去原型对象中寻找,如果原型对象中有,则使用,如果没有则取原型的原型中去寻找,直到找到Object对象的原型。Object对象的原型没有原型,如果在Object中依然没有找到,则返回undefined!!!
-------------------------------------------------------------------------------------------------
toString() 可以修改prototype的toString方法,实现打印对象的基本信息。
-------------------------------------------------------------------------------------------------
GC(垃圾回收)
程序运行过程中也会产生垃圾,会导致程序运行的速度过慢,所以需要一个垃圾回收的机制,来处理程序运行过程中产生的垃圾!
将不再使用的对象设置为null,这样就可以保证垃圾回收机制自动回收。
-------------------------------------------------------------------------------------------------
使用typeof 来检查当前属性时什么。
内建对象
宿主对象
自定义对象
数组(Array)
使用内建对象创建数组:var arr = new Array();
给数组赋值:
数组[index] = 值
读取数组中的对象,数组[索引],如果读取不存在的索引,它不会报错,而是返回undefined
注:
对于连续的数组,使用length可以获取到数组的长度,(元素的个数)
对于非连续的数组,使用length会获取到数组的最大的索引+1 !!!尽量不要创建非连续的数组
修改length:
如果修改的length大于原长度,则多出部分会空出来,
如果修改的length小于原长度,则多出部分会被删除!!!
总是在数组最后一位添加元素 数组[数组.length] = 值
使用字面量来创建数组:
var arr = [];;
区分:
var arr = [10];//创建一个长度为1的数组,并且里面有一个值为10
var arr = new Array(10); //创建一个长度为10的数组,其中每个值为空"";
数组中的元素可以是任意的数据类型。也可以是对象,也可以是函数。也可以是数组。
arr = ["hello",1,true,undefined];
数组常用的操作方法:
push() 向数组的末尾添加一个或多个元素,并返回最新的长度
pop() 删除数组的最后一位元素,并返回被删除的元素
unshift() 向数组的开头添加一个或多个元素,并返回最新的长度
shift() 删除数组开头的一个元素,并返回被删除的元素
slice() 从已有的数组中返回选定的元素 ,含首不含尾,该方法不会改变原数组,而是将截取到的元素封装到一个新数组中返回。第一个参数是开始索引,第二个参数是结束索引。结束索引可以省略不写,此时从开始索引截取到末尾。如果传递一个负值,则从后往前计算。
splice() 删除元素,并向数组添加新元素。第一个参数为开始位置索引,第二个参数为删除的数量,原数组的值被改变。第三个参数及以后可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边,第二个参数传0表示不删除!!!
concat() 将数组或者多个元素拼接为一个新的数组,不会对原数组产生影响。
join() 可以指定一个字符串作为参数,将数组的元素按照指定的字符串拼接返回一个字符串。默认使用逗号。
reverse(0 反转数组。对原数组产生影响/
sort() 对数组中的元素进行排序,对原数组!!默认会按照unicode编码进行排序。sort() 中添加一个回调函数,来指定排序规则。回调函数中需要定义两个形参,第一个参数在第二个参数之前。
var arr = [5,4];
arr.sort(function(a,b){
if(a > b){
return 1;
}else if(a < b){
return -1;
}else{
return 0;
}
//简写 return a - b;
});
数组的遍历:
for循环
forEach() 注:ie8以上不支持!!!
forEach() 方法需要一个函数作为参数。
由我们创建但是不由我们调用的,我们称为回调函数。
arr.forEach(function(){});// 将遍历到的元素以实参的形式传递进来,我们可以定义形参,来读取这些内容!!!
在回调函数中会传递三个参数。第一个参数是当前正在遍历的元素,第二个参数是当前遍历元素的下标(索引),第三个参数是当前遍历的数组。
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
- JS学习笔记-基础理论+数组
- AJAX 基础理论学习笔记
- JS学习笔记-数组
- 【JS学习笔记】数组
- JS数组 学习笔记
- DNS学习笔记之1 - 基础理论
- 【svm学习笔记】svm_基础理论1
- ICE中间件学习笔记 基础理论篇
- [python基础理论]python学习笔记1
- [python基础理论]python学习笔记2
- [python基础理论]python学习笔记3
- [python基础理论]python学习笔记4
- 自定义View学习笔记01—基础理论
- JS数组学习笔记整理
- js数组操作学习笔记
- JS学习笔记之数组
- JS学习笔记_3_数组
- 机器学习深度学习基础笔记(1)——基础理论
- JavaScript对象实例之Array
- R语言做主成分分析
- 自动化测试到底是什么
- JAVA---j2se学习笔记
- ZooKeeper之观察者(watch)
- JS学习笔记-基础理论+数组
- C++字符串匹配(一):BF算法
- 数据结构——二叉树
- JVM 垃圾回收算法及回收器详解
- 此刻可有同知
- mysql-connector-java-6.0.4.jar 异常
- 单元测试
- 取消空格的自动上屏
- win下gvim打开时自动在第一行写入">"字符 附vimrc