面向对象的思想

本文介绍JavaScript面向对象编程的基础概念,包括对象的创建方法、特点及使用场景。通过实例讲解了对象的三种创建方式:直接使用new Object()、工厂模式及自定义构造函数,并对比了不同创建方式的特点。
摘要由CSDN通过智能技术生成

 argument对象伪数组

 面向对象的思想

<script>
        /*
        * 编程思想:把一些生活中做事的经验融入到程序中
        * 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程
        * 面向对象:根据需求找对象,所有的事都用对象来谈,注重的是结果
        *
        * 面向对象特性:封装,继承(JS里面没有类的概念),多态(JS也没有这个概念)
        * JS不是面向对象的语言,但是可以模拟面向对象的思想
        * JS是一门基于对象的语言
        *
        *对象:有特征和行为,具体特指某一个事物
        *
        * 创建对象的三种方式:
        * 1.调用系统的构造函数创建对象
        * var 变量名 = new Object();
        *
        *
        * 2.自定义构造函数
        *
        *
        *
        *
        *
        *
        * */
        var obj = new Object();
        //对象有特征---属性    行为---方法
        //添加属性----如何添加属性?  对象.名字=值;
        obj.name = "小辉";
        obj.age = 38;
        obj.sex = "女";
        //添加方法--如何添加方法?对象.名字=函数;
        obj.eat = function () {
            console.log("我喜欢吃油炸榴莲凉拌臭豆腐和大蒜");
        };
        obj.play = function () {
            console.log("我喜欢打小杰");
        }
        console.log(obj.name);
        console.log(obj.sex);
        console.log(obj.age);
        obj.eat();
        obj.play();
    </script>

 

工厂模式常见对象

<script>
        /*
        * 如何获取该变量(对象)是不是属于什么类型的?
        * 语法:
        * 变量 instanceof 类型的名字---------->布尔类型,结果为true,false
        *
        * 在当前的对象的方法中,可以用this关键字代表当前的对象
        * */
        //人的对象
        // var person = new Object();
        // person.name = "小张";
        // person.age = 18;
        // person.sayHi = function () {
        //     //在当前这个对象的方法中是可以访问当前这个对象的属性值
        //     console.log("您好,吃了没您,我叫"+person.name);
        // }

        //如何一次性创建多个对象?吧创建对象的代码封装在一个函数中
        //工厂模式创建对象
        function creatObject(name,age) {
            var obj = new Object();
            obj.name = name;//第一个name是属性,第二个name是变量名
            obj.age = age;
            obj.sayHi=function () {
                console.log("阿尼哈谁哟,我叫:"+this.name+"我今年"+this.age);
            };
            return obj;//必须要返回这个对象
        }
        //创建人的对象
        var per1 = creatObject("小张",18);
        per1.sayHi();
        //在创建一个人的对象
        var per2 = creatObject("小辉",40);
        per2.sayHi();
        
    </script>

自定义构造函数

 对象占了两块空间,一个是栈一个是堆.堆里面是对象,栈里面是该对象所在空间的地址(引用).

 

字面量的方式创建对象

 <script>
        //字面量方式创建对象
        var obj={};//空对象
        //添加属性
        obj.name = "小白";
        obj.age = 10;
        //添加方法
        obj.sayHi=function () {
            console.log("我是"+this.name);
        };
        obj.sayHi();
        //优化后的写法
        var obj2={
            name:"小明",
            age:20,
            sayHi:function () {
                console.log("我是"+this.name);
            },
            eat:function () {
                console.log("吃了");
            }
        };
        obj2.sayHi();
        obj2.eat();
    </script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值