js中的class

 面向对象 与 面向过程

        面向对象 => 将大象放进冰箱

        1.打开冰箱

        2.把大象放入冰箱

        3.关上冰箱

        按照分析好的步骤一步步执行,解决问题

        面向对象 => 将大象放进冰箱

            面向对象将事物分成一个一个的对象,然后分工合作

        1. 大象对象

            设置一个将大象放入冰箱的功能(我的理解是封装一个函数)

        2.冰箱对象

            设置打开冰箱功能

            设置关闭冰箱功能

       

        面向对象是以对象功能来划分;不是按步骤来划分(字面意思,结合例子)

        面对对象程序开发思想;每一个对象都有自己的明确的功能;

        编码灵活,代码可复用,容易维护,继承性,适合大型项目(这里是和我们的框架打包好,封装好的组件的原理)

        把数据以及对数据的操作放在一起(有点像vue里的一些同步组件);作为一个相互依赖的整体---对象;

        对象同类对象抽离进行复用;形成类

   <script>
        //工厂模式
        // let obj ={
        //         name:"夏栀",
        //         food:"奶茶",
        //         add(value){
        //             this.age=10
        //             console.log(this.name+value+this.food);
        //         }
        // }
        // obj.add("站着")
        // obj.add("坐着")

        //说实话人家自己造的,一开始都不值得去理解,不好理解
        function add(val){
            let aa =100;
            console.log("打开冰箱");
            add1(val,aa)
        }
        
        add("大象")
        function add1(val,aa){
            let s=10;
            console.log("把"+val+"放入冰箱");
            add2(s,aa)
        }
        function add2(s){
            console.log(s);
            console.log("关上冰箱");
        }
        add("大象")
    </script>

2,.ES6 面向对象class

  面向对象由

            属性和方法组成

                属性

                    描述信息,

                方法

                    行为,操作

             

        把数据及对数据的操作放在一起;作为一个相互依赖的整体 ---- 对象;  

            对象同类对象抽离进行复用;形成类

       

        es6 class 类面向对象写法;

        1.  class 声明类{ }, 没有声明提升

        2.  使用class 必须通过new 构造

        3.  返回一个类实例对象

        4.  class命名与 变量起名规范一致

        5.  class命名首字母大写

        6.  constructor类的默认方法,类默认会调用constructor函数; 在这里写对应的属性

        7.  通过this设置的属性,在对应的this类里面任何位置都可以访问到

        8.  class类里面基本上然后函数里面的this代表自身class类

        9.  constructor默认return this;自己修改时return 设置返回引用类型将会修改返回的数据

<script>
        // class类    
        class Person {
            constructor() {
                // 通用属性  this 是Person类对象{} 
                this.name = "夏栀";
                this.food = "奶茶";
                
                // 默认返回this对象 自己修改时return 返回了引用类型将会修改返回的数据
                // return {}
            }
            // 不要写,
            add() {
                // console.log(this);
            }
        }
        // result 实例
        let result = new Person()
        console.log(result,"实例");



    </script>

3.原型链

首先说明这块我并不是很懂,翻了下“红宝书”,发现原型链·只是其中--面向对象程序设计--的继承中的--一小个章节,属于中高级js

原型链

            原型放置对应方法

        1.new class类执行,返回实例化类对象(this),实例会继承原型的内容

        2.class 上面的方法,全部会放在到原型上

        3.实例连接到原型上去 实例._prptp_ 到达原型上

        4.类怎么到原型上去 class类.prototype  到达原型上

        5.原型上有个constructor属性指向class类

        原型最终位置是object

毕竟是骨子里的东西,没点对强制类型语言的理解,并不好理解

<script>
        // class Person{
        //     constructor(name,food){
        //         this.name=name;
        //         this.food=food;
        //         return this //类对象
        //     }
        //     // 原型
        //     add(val){
        //         console.log(this.name+val+this.food);
        //     }

        // }
        // // result 实例
        // let result =new Person("夏栀","奶茶");
        // console.log(result);
        //es5原型
        function Person1(name,food){
            this.name=name;
            this.food=food;
        }
        Person1.prototype.add=function(){
            console.log("原型");
        }

        let resutl1 =new Person1("夏栀","奶茶")
        console.log("resutl1");

        Array.prototype.add=function(){
            let len =this.length;
            let result=0;
            for(let index =0;index<len;index++){
                result +=this[index]
            }
            return result
        }

        let arr=[11,12,33]
        let arr1=[1,2,3]

    </script>

<think>我们正在讨论JavaScript中Element对象的classList属性。根据用户需求,需要详细讲解classList属性的用法及示例。 根据引用[2]和引用[3],classList是Element对象的一个属性,它返回一个DOMTokenList对象,表示元素的类名集合。这个对象提供了一系列方法(如add、remove、toggle、contains等)来操作元素的类名,比直接操作className字符串更加方便和安全。 我们将按照以下结构回答: 1. classList属性的基本介绍 2. classList对象的方法详解(包括add, remove, toggle, contains, replace等) 3. 提供示例代码展示这些方法的使用 4. 注意事项或兼容性说明(如果需要) 同时,根据系统指令,我们需要在回答中自然地添加引用标识,并在最后生成相关问题。 注意:用户要求使用中文回答,且行内数学表达式用$...$,独立公式用$$...$$(但本问题不涉及数学公式,所以重点在代码和文字描述)。 另外,用户要求生成相关问题,放在回答的最后。 开始回答:</think>### JavaScript Element classList 属性详解 `classList` 是 DOM 元素的核心属性,返回一个实时更新的 `DOMTokenList` 对象,提供安全便捷的 CSS 类操作方法。相比直接操作 `className` 字符串,它能避免意外覆盖现有类名,且支持链式调用[^3]。 #### 核心方法及用法 1. **添加类名** `add()` 方法可添加一个或多个类名: ```javascript element.classList.add('active', 'highlight'); // 添加两个类 ``` 2. **删除类名** `remove()` 方法移除指定类名: ```javascript element.classList.remove('disabled'); // 删除类 ``` 3. **切换类名** `toggle()` 根据类名存在性切换状态(可强制设置): ```javascript // 点击按钮切换暗黑模式 button.addEventListener('click', () => { document.body.classList.toggle('dark-mode'); }); ``` 4. **检查类名** `contains()` 返回布尔值检测类是否存在: ```javascript if (element.classList.contains('warning')) { showAlert(); // 包含警告类时触发 } ``` 5. **替换类名** `replace()` 替换旧类为新类: ```javascript element.classList.replace('old-theme', 'new-theme'); ``` #### 完整操作示例 ```html <div id="demo" class="box">示例元素</div> <button onclick="modifyClass()">修改样式</button> <script> function modifyClass() { const div = document.getElementById('demo'); // 链式操作:切换激活状态并更新样式 div.classList .add('active') // 添加 active 类 .remove('box') // 移除 box 类 .toggle('rounded') // 切换 rounded 类 .replace('text', 'bold');// 替换 text 为 bold console.log("当前类列表:", div.classList.value); // 输出: active rounded bold } </script> ``` #### 关键特性 - **实时性**:操作即时反映在 DOM 中,触发样式渲染[^2] - **只读集合**:通过 `length` 属性和索引访问类名(如 `classList[0]`) - **安全操作**:自动处理空格和重复类名,避免语法错误[^3] - **兼容性**:支持所有现代浏览器(IE10+) > ⚠️ 注意:`classList` 方法不能直接操作 `className` 字符串中的非法字符(如空格),需确保类名符合 CSS 规范[^3]。 --- ### 相关问题 1. `classList` 与直接操作 `className` 属性有何性能差异? 2. 如何用 `classList` 实现 CSS 动画的播放控制? 3. `classList` 在响应式设计中有哪些典型应用场景? 4. `DOMTokenList` 对象还支持哪些扩展方法? [^1]: 前端研习录(28)——JavaScript Element对象及其属性讲解及示例分析 [^2]: element.classList 详解 [^3]: DOM 元素(Element)属性classList 对象详解 [^4]: JavaScript学习之Element对象_属性
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白村第一深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值