zoukankan      html  css  js  c++  java
  • JavaScript课程——Day05(函数封装、获取元素样式、浏览器能力判断、this、自定义属性)

    1、函数封装

    函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

      1.1、获取元素样式

        1.1.1、标准浏览器

    getComputedStyle(元素) 
    返回的是一个对象,IE8及以下不支持
    // Computed 计算
    // window.getComputedStyle(元素)   返回这个元素所有的样式,是一个对象
    // IE8及以下不支持
    var s = getComputedStyle(box); // {}
    console.log(typeof s); // 'object'
    
    console.log(s.width);
    console.log(s.height);
    console.log(s.backgroundColor);

        1.1.2、IE浏览器支持

    元素.currentStyle
    返回的是一个对象
    // current 当前
    // 元素.currentStyle   返回这个元素所有的样式,是一个对象
    var s = box.currentStyle;
    console.log(s);
    console.log(typeof s); // 'object'
    
    console.log(s.width);
    console.log(s.height);
    console.log(s.backgroundColor);

      1.2、浏览器能力判断

    // 浏览器能力判断
    console.log(window.getComputedStyle); // 在IE9及以上,返回一个函数,在IE8及以下,返回undefined
    
    if (window.getComputedStyle) {
        // IE9及以上
        console.log(getComputedStyle(box).width);
    } else {
        // IE8及以下
        console.log(box.currentStyle.width);
    }

      1.3、封装

    • 声明函数,把主要代码放入函数中
    • 找函数中可变量做参数,带入函数中
    • 调用,调试
    // 封装  ele元素   attr样式属性
    function getStyle(ele, attr) {
        if (window.getComputedStyle) {
            // IE9及以上
            return getComputedStyle(ele)[attr];
        } else {
            // IE8及以下
            return ele.currentStyle[attr];
        }
    }
    
    console.log(getStyle(box, 'width'));
    console.log(getStyle(box, 'height'));
    console.log(getStyle(box, 'backgroundColor'));

    2、this

    • 谁调用了函数,this就指向谁
    • this不是在定义的时候确定的,而是在调用函数的时候确定的

    this种类:

    普通函数中的this

    事件函数中的this

    对象方法中的this

    function fn() {
        console.log(this);
    }
    
    // 1、普通函数调用的this
    fn(); // window调用了函数
    
    // 2、事件函数中的this
    box.onclick = fn; // box调用了函数
    
    // 1和2综合
    // box.onclick = function () { // box
    //     fn(); // window
    // }
    
    // --------------------------------
    // 3、对象的方法中的this
    var obj = {
        name: 'zs',
        fn: function () {
            console.log(this);
        }
    }
    
    obj.fn(); // fn这个函数中的this为obj这个对象
    
    var v = obj.fn;
    v(); // window

    this面试题

    var name = '李四';
    var obj = {
        name: '张三',
        fn: function () {
            console.log(this.name);
        }
    }
    
    obj.fn(); // 张三
    
    var v = obj.fn;
    v(); // 李四

    3、自定义属性

    <!-- id class title 原生自带的属性 -->
    <!-- msg 自定义的属笥 -->
    <div id="box" class="abc" title="关灯吃面" msg="平头哥">小王</div>
    
    <script>
        var box = document.getElementById('box');
    
        // 写在标签上的自定义属性,可以在html结构中查看,但是js不能操作(点和中括号的方式不能操作)
        console.log(box.title);
        console.log(box.msg);
    
        // ------------------------------
        // 通过js添加的自定义属性,在html结构中不可见,但可以通过js获取
        box.ddd = '东风吹,战鼓擂'; // 添加自定义属性
        console.log(box.ddd);
    </script>
  • 相关阅读:
    redis4.0 安装
    MYSQL第一节:Mysql5.7 通用二进制安装方法
    mysql密码忘记,重新设置密码
    selenium使用
    数据结构
    Mysql数据库引擎的区别
    python中的mysql转义字符串(向mysql插入特殊字符)
    scrapyd使用
    liunx部署redis
    Django+uwsgi部署到liunx服务器上
  • 原文地址:https://www.cnblogs.com/miaochaofan/p/14695723.html
Copyright © 2011-2022 走看看