学习js高级的第一天

一、创建对象的方法

        //创建一个学生对象  属性 :名称,身高,年龄  方法:吃饭 ,跑

        1、直接声明对象(最基础的创建对象的方法)

        好处:简单,方便

        缺点:无法进行量产

        var s1={

            name:"王一",

            height:180,

            age:21,

            eat:function(){

                console.log(this.name+"正在吃饭")

            },

            run:function(){

                console.log(this.name+"正在跑")

            }

        }

        2、工厂模式创建对象

        好处:快速量产

        弊端:通过工厂模式创建的对象,没法去检测对应的类型

        function createStudent(name,age,height){

            var obj=new Object()

            obj.name=name

            obj.height=height

            obj.age=age

            obj.eat=function(){

                console.log(this.name+'正在吃')

            }

            return obj

        }

       var s1=createStudent("王一",21,180)

        var s2=createStudent("王二",22,192)

3、构造函数创建对象

        javascript :原本不存在类这个概念

        构造函数 来模拟类

        其他类型的语言 ,创建对象->类

        类:描述一系列相同类型事物的总称  人 动物

        构造函数:js this的指向性问题

        需要五个学生对象 ,创建一个学生类(构造函数 )

        学生类:name,age,height  方法 eat run

        通常构造函数的首字母大写 类的首字母大写

        构造函数方法

        好处:1.量产 2.解决了工厂模式 无法分辨指定类型的问题

        弊端:同样的方法,会开辟不同的存储空间,造成内存的大量消耗

        function Student(name,age,height){

            this.name=name

            this.age=age

            this.height=height

            this.eat=function(){    //明明是同一种方法,但是不相等  每一个对象中eat方法,都有一个自己独立的存储空间

                console.log(this.name+'正在吃')

            }

        }

        var s1=new Student("王一",21,180)

        var s2=new Student("王二",55,58)

new 做了什么? 面试题

        1. 创建一个空对象 {}

        2. 将构造函数中的this指向 空对象

        3. 将构造函数中所有属性 和方法 都赋值给{}

        4. 将对象返回

4、原型对象(将共用的方法 放到原型上 直接进行调用)

构造函数 :内存消耗   共有的方法 写到原型中来节约内存  构造函数中原型 ==对象中的原型 __proto__

将共有的方法写到构造函数的原型中 ,实例化对象以后 就可以通过原型 拿到其方法

function Student(name,age,height){

            this.name=name

            this.age=age

            this.height=height

        }

Student.prototype.eat=function(){

            console.log(this.name+"正在吃")

        }

        var s1=new Student("王一",21,180)

        var s2=new Student("王二",22,222)

        s1.__proto__.run=function(){

            console.log(this.name+"正在跑")

        }

备注:

 开发过程中 ,存在各种各样的对象 比如:  老师对象  学生对象

判断当前这个对象是否属于老师

 instanceof 用于检测对应的数据类型的(简单的数据类型 数值,字符,布尔 中,必须通过new 来创建的检测成功)

typeof() 返回数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值