一、This
解析器在调用函数每次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象,根据函数的调用方式的不同,this会指向不同的对象。
– 以函数的形式调用时,this永远是window
– 以方法的形式调用时,this就是调用方法的那个对象
function fun(){
console.log(this);
}
var obj = {
name:“yp”,
sayName:fun
};
var obj2 = {
name:“zyx”,
sayName:fun
};
fun();//window
//obj.sayName();
obj2.sayName();//name:“zyx”
二、构造函数
创建一个构造函数,专门用来创建Person对象的,构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯首字母大写
– 调用方式不同,普通函数是直接调用,构造函数需要使用new关键字来调用
function Person(){
}
var per = new Person();
console.log(per);//object
– 构造函数的执行流程
1、立刻创建一个新的对象
2、将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
3、逐步执行函数中的代码
4、将新建的对象作为返回值返回
使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数成为一个类,将通过一个构造函数创建的对象,称为是该类的实例
function Person(name , age , gender){
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function(){
alert(this.name);
};
}
function Animal(){
}
var per = new Person(“zzz”,12,“man”);
var per2 = new Person(“zzx”,22,“man”);
var animal = new Animal();
console.log(per.name);
console.log(Animal);
使用instanceof可以检查一个对象是否是一个类的实例
console.log(per instanceof Person);
语法:对象 instanceof 构造函数
如果是则返回true否则返回false
console.log(animal instanceof Object);//true
所有的对象都是object的后代,所以任何对象和object在instanceof检查时都会返回true
三、垃圾回收
当一个对象没有任何的变量或属性对它进行引用,此时我们将永远无法操作该对象,这种对象就是一个垃圾,占用大量的内存空间,JS中拥有自动的回收机制,我们只需将不再使用的对象设置为null。
四、数组的5个方法:
5.1push()
- 该方法可以向数组的末尾添加一个或多个元素,并返回数组的新长度,
- 可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾
var arr = [1,2,3];
var result = arr.push(4,5,6);
console.log(arr);
console.log(“result =”+result);//6 - 该方法会将数组的新的长度作为返回值返回
5、2pop() - 该方法可以删除数组的最后一个元素
var arr = [1,2,3];
var result = arr.push(4,5,0);
console.log(arr);
//console.log(“result =”+result);
result = arr.pop();
// arr.pop();
console.log(arr);
console.log("result = "+result);//0,因为删除了0
5.3unshift() - 向数组开头添加一个或多个元素,并返回新的数组长度
- 向前边插入元素以后,其他的元素索引会依次调整
var arr = [1,2,3];
arr.unshift(99,88);
console.log(arr);//99,88,1,2,3
5.4shift() - 可以删除数组的第一个元素,并将被删除的元素作为返回值返回
5.5slice - 可以用来从数组提取指定元素,不会改变元素数组,而是将截取到的元素封装到一个新数组中返回
- 参数:1、截取开始的位置的索引,包含开始索引
2、截取结束的位置的索引,不包含结束索引 - 第二个参数可以省略不写,此时会截取从开始索引往后的所有元素
- 索引可以传递一个负值,是从后往前计算 -1倒数第一个
var arr = [“张艺兴”,“范丞丞”,“胡一天”,“罗云熙”,5];
result = arr.slice(3);//“罗云熙”,5
result1 = arr.slice(1,-1);
console.log(result);
console.log(result1);
文中的代码可以自己敲然后验证