IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript对象的学习一(学习日记十) -> 正文阅读

[JavaScript知识库]JavaScript对象的学习一(学习日记十)

一、什么是对象

????????????编程思想:把生活中做事的一些经验融入到程序中

? ? ? ? ? ? 面向过程:凡事亲力亲为,注重的是过程。

? ? ? ? ? ? 面向对象:根据需求找对象,所有事情对象来做,注重的是结果

? ? ? ? ? ? 面向对象的特性:封装、继承、多态(抽象性)

? ? ? ? ? ? JavaScript不是面向对象的语言,是基于面向对象的语言,可以看成是可以模拟面向对象的思想

? ? ? ? ? ? 什么是对象?看得见、摸得着,具体所指的某个东西

? ? ? ? ? ? 分析对象的特点:

? ? ? ? ? ? 特征 ---> 属性

? ? ? ? ? ? 行为 ---> 方法(能做什么)

二、如何创建对象

创建对象的三种方法:

? ? ? ? ? ? ? ? - 调用系统的构造函数来创建对象

? ? ? ? ? ? ? ? - 自定义构造函数创建对象

? ? ? ? ? ? ? ? - 以字面量的方式创建对象

1.构造函数创建对象

?????????????????var obj = new Object();

? ? ? ? ? ? ? ? - 添加/设置属性:对象.属性名 = 值;

? ? ? ? ? ? ? ? - 添加/设置方法:对象.方法名 = 匿名函数;

? ? ? ? ? ? ? ? ?- 数据存储形式:键值对

var obj = new Object();
        console.log(obj);
        // 属性
        obj.name = "muxiao";
        obj.age = 22;
        // 方法
        obj.job = function() {
            console.log("敲代码");
        }

        // 输出对象中的属性
        console.log(obj.name);
        console.log(obj.age);

        // 对象中的方法调用
        obj.job();

2.自定义构造函数创建对象

????????????自定义构造函数创建对象 ---> 自己定义一个构造函数

? ? ? ? ? ? 函数和构造函数的区别:构造函数的名字首字母大写

// ① 创造一个构造函数
        function Person(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayHello = function() {
                console.log("hello!");
                console.log(this);// 谁调用,this就指向谁
            }
        }

        // ② 实例化对象
        var ps1 = new Person("muxiao", 16, "男");
        // console.log(ps1);
        var ps2 = new Person("mx", 3, "男");
        // console.log(ps2);

        ps1.sayHello();
        ps2sayHello();

3.以字面量的方式创建对象

var obj = {};
        obj.name = "muxiao";
        obj.age = 12;
        obj.sleep = function() {
            console.log("敲代码");
        }
        // console.log(obj);

        var obj2 = {
            age: 16,
            name: "mx",
            eat: function() {
                console.log("吃饭...");
            }
        }
        // 修改属性值
        obj2.age = 14;
        console.log(obj2);

        // 追加属性/方法
        obj2.sex = "女";
        obj2.play = function() {
            console.log("我爱敲代码");
        }
        obj2.play();

//delete命令用于删除对象的属性,删除成功后返回true。
        var obj = { p: 1 };
        Object.keys(obj) // ["p"]

        delete obj.p; // true
        obj.p; // undefined
        Object.keys(obj); // []



        // 设置属性/方法的另外一种写法:(不使用)
        // obj2.height = "173cm";
        obj2["height"] = "173cm";
        obj2["dance"] = function() {
            console.log("跳舞");
        }

        console.log(obj2);
        obj2.dance();

三、如何批量创建对象

? ? ? ? ? ? ? ? - 工厂模式创建对象(通过封装函数)

function girlFriend(name, age) {
            var obj = new Object();
            obj.name = name;
            obj.age = age;
            // 添加方法
            obj.favorite = function() {
                console.log("我叫" + this.name + ",我喜欢唱歌");
            }
            return obj;
        }

        var girlFriend01 = girlFriend("小芳", 20);
        var girlFriend01 = girlFriend("小薇", 25);
        console.log(girlFriend01.age);
        girlFriend01.favorite();


// 判断对象是否属于该类型instanceof语法:对象名/变量名 instanceof 数据类型的名字 ---> 返回值是布尔类型
        console.log(girlFriend01 instanceof Object);//true
        console.log(girlFriend01 instanceof Number);//false

四、总结

? ? ? ? ? ??- 对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合;

? ? ? ? ? ? - 对象的所有键名都是字符串,点语法的时候加不加引号都可以;

? ? ? ? ? ? - 对象的键名是数值,会被自动转为字符串;

? ? ? ? ? ? - 如果键名不符合标识名的条件,且也不是数字,必须加上引号,否则会报错;

? ? ? ? ? ? - 对象的每一个键名又可以称为“属性”(property),他的“键值”可以是任何数据类型,如果一个属性的值为函数,通常把这个属性称为“方法”,他可以像函数那样调用

? ? ? ? ? ? - 如果属性的值还是一个对象,久形成了一个链式引用;

? ? ? ? ? ? - 对象的属性之间用逗号分隔,最后一个属性后面可以加逗号,也可以不加;

? ? ? ? ? ? - 读取对象属性有两种方法:一种是使用点运算符,另外一种是使用方括号运算符;

? ? ? ? ? ? - 如果使用方括号运算符,见名必须放在引号里面,否则会被当做变量处理;

? ? ? ? ? ? - 数字键可以不加引号,因为会自动转成字符串;

? ? ? ? ? ? - 数值键名不能使用点运算符(因为会被当成小数点),只能使用方括号运算符。

?五、作业

? ? ? ? 1.分别用三种方法给自己找个对象

//- 调用系统的构造函数来创建对象
        var obj = new Object();
        obj.name = 'muxiao';
        obj.age = 18;
        obj.fangfa = function(){
            console.log(this.name + this.age);
        }
        console.log(obj);
        obj.fangfa();

        //- 自定义构造函数创建对象
        function obj(name,age,sex){
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.fangfa = function(){
                console.log('我是对象的方法');
            }
        }
        var ob = new obj('muxiao',18,'nan');
        console.log(ob);
        console.log(ob.name);
        console.log(ob.fangfa);
        ob.fangfa();

        //- 以字面量的方式创建对象
        var obj = {};
        obj.name = 'muxiao';
        obj.age = 18;
        obj.fangfa = function(){
            console.log('对象的方法');
        }
        console.log(obj);
        console.log(obj.age);
        console.log(obj.fangfa);
        obj.fangfa();

????????2.工厂模式批量创建小猫:颜色、品种、年龄 ? 抓鱼、洗脸...

function cat(color,type,age){
            var obj = new Object();
            obj.color = color;
            obj.type = type;
            obj.age = age;
            obj.zhuayu = function(){
                console.log('这只猫会抓鱼');
            }
            obj.xilian = function(){
                console.log('这只猫会洗脸');
            }
            return obj;
        }
        var cat1 = cat('red','花猫',10);
        console.log(cat1);
        console.log(cat1.color);
        console.log(cat1.zhuayu);
        console.log(cat1.xilian);
        cat1.zhuayu();

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:39:54  更:2021-12-02 16:40:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:41:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码