【黑马程序员济南】 前端与移动开发就业班笔记JS进阶:Day04
传智播客温馨提示:上一节学习了JS中的函数声明及使用,本节学习JS中对象的批量创建,以及this的用法。 对象的声明和使用通过构造函数声明(更加通用) var obj= new Object();
通过字面量声明(更加简便) var obj= {};
对象具有属性和方法 属性 用来描述对象的特征 一般是名词 对应变量 方法 用来描述对象的行为 一般是动词 对应函数 属性 属性的定义 对象.属性名 = 值 属性的调用 对象.属性名
方法 方法的定义 对象.方法名 = function(){ //函数体 } 方法的调用 对象.方法名()
关于this的指向 全局上下文全局运行上下文中(在任何函数体外部),this 指代全局对象 函数上下文
对象方法中的this指的是该方法所属的对象 直接调用中的this指的是全局对象
总之,函数上下文中(在函数内部),this指的是当前函数所属的对象 构造函数中当一个函数被作为构造函数使用时(前面加new关键字),new关键字会让this的指向改变,并让其成为当前函数的返回值
工厂模式创建对象为什么要优化创建对象的方式 因为对象在项目中被大规模的使用,所以每一点小小的改进都会对项目整体效率带来很大的提升,现阶段同学们还不可能有深刻的体会,只是让大家了解一下,后面讲项目大家自然就明白了。 同类型对象,只是一些属性的值不同,通过对象字面量创建对象每次都要写那么多东西很费劲,我们可以将创建对象的过程封装进一个函数,只把发生变化的属性作为参数传入,从而简化对象创建的过程,但是工厂模式只是创建出来一个普通的对象并将其返回,因此无法判断实例的具体类型。
构造函数创建对象this和new 利用new 关键字可以声明新的对象。new 关键字可以让构造函数中this的指向改变,并让构造函数把this返回。 构造函数 构造函数也是函数,只不过会默认返回一个对象。下面我们分别通过用this和new去创建对象,让同学们感受一下 [JavaScript] 纯文本查看 复制代码 /**
*@author 传智播客
*/
function Person(name) {
var obj = {};
obj.name = name;
obj.sayHi = function () {
console.log(obj.name);
}
return obj;
}
var p1 = Person("黑马")
function Person(name) {
this.name = name;
this.sayHi = function () {
console.log(this.name);
}
}
var p2 =new Person("黑马")
通过构造函数创建对象更方便(不需要创建对象并返回)。更重要的是可以通过instanceof来判断实例的类型了。
基本类型和复杂类型分类基本数据类型(值类型):直接存储值 number、string、boolean、undefined、null(基本类型只有这五个) 复杂数据类型(引用类型):存储引用 object
基本类型的复制
复杂类型的复制
基本类型参数
复杂类型参数
今天的讲解到此结束,如果小伙伴们还有什么不懂的可以在下方留言,或者去黑马程序员官网下载最新资料进行学习。http://www.itheima.com/
|