A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【黑马程序员济南】 前端与移动开发就业班笔记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来判断实例的类型了。
基本类型和复杂类型分类
基本数据类型(值类型):直接存储值
numberstringbooleanundefinednull(基本类型只有这五个)
复杂数据类型(引用类型):存储引用
object

基本类型的复制

复杂类型的复制

基本类型参数

复杂类型参数

今天的讲解到此结束,如果小伙伴们还有什么不懂的可以在下方留言,或者去黑马程序员官网下载最新资料进行学习。http://www.itheima.com/

2 个回复

倒序浏览
回复 使用道具 举报
多谢大哥分享啊,希望持续更新啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马