主頁 > 前端設計 > javascript高級(二)

javascript高級(二)

2021-08-15 07:53:09 前端設計

創建物件的三種方式

ES6前 ,物件不是基于類創建的,而是用一種稱為構建函式的特殊函式來定義物件和它們的特征,

  • 通過new關鍵字創建物件
  • 通過字面量創建物件
  • 通過建構式創建物件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>創建物件的三種方式</title>
</head>

<body>

</body>
<script>
    //利用new Object創建物件
    let obj1 = new Object();

    //利用字面量來創建物件
    let obj2 = {};

    //利用建構式來創建物件
    function People(name, age) {
        this.name = name;
        this.age = age;
        this.say = function() {
            console.log('Hello Word');
        }
    }

    //利用建構式來創建實體化物件
    let people1 = new People('堯子陌', '24');
    console.log(people1);
    console.log(people1.name);
    people1.say();
</script>

</html>

在這里插入圖片描述

建構式

建構式是一種特殊的函式,主要用來初始化物件.

即為物件成員變數賦初始值,總之把物件中的公共屬性與方法抽取出來,然后封裝到這個函式里面

注意事項

1.建構式用于創建某一類物件,其首字母要大寫,

2.建構式要與new在一起使用才有意義,

new關鍵字

1.在記憶體中創建一個新物件

2.讓this指向這個新物件

3.執行建構式的代碼,給這個新物件添加屬性與方法

4.回傳這個新物件(建構式不需要retern)

靜態成員和實體成員

靜態成員:在建構式本體上添加的成員被稱為靜態成員,只能由建構式呼叫

實體成員:在建構式內部創建的物件成員被稱為實體成員,只能由實體化的物件來訪問,

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>靜態成員與實體成員</title>
</head>

<body>

</body>
<script>
    //利用建構式來創建物件
    function People(name, age) {
        this.name = name;
        this.age = age;
        this.say = function() {
            console.log('Hello Word');
        }
    }

    //實體化物件只能通過實體化物件來呼叫
    let people1 = new People('堯子陌', '24');
    console.log(people1.name);
    people1.say();

    //在建構式上添加的成員被稱為靜態成員
    People.sex = '男';
    console.log(People.sex);
</script>

</html>

在這里插入圖片描述

原型

建構式很好用 但很浪費記憶體

每一個建構式都有一個prototype屬性,指向一個物件,利用prototype屬性可以共享方法


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>原型</title>
    </head>
    <body>

    </body>
    <script>
        function People(name, age) {
            // 在建構式內部創建的成員屬于實體化成員,只有實體化物件才能呼叫
            this.name = name;
            this.age = age;

        }
            
        People.prototype.say =function(){
            return "hello woord"
        }
        var People1 = new People('堯子陌', "23");
        
        console.log(People1.say())

        var People2 = new People('驚鴻一面','28');
        console.log(People2.say());
        
        console.log(People1.say === People2.say);
    </script>
</html>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型</title>
</head>

<body>

</body>
<script>
    //利用建構式來創建物件
    function People(name, age) {
        this.name = name;
        this.age = age;

    }
    // 在原型上定義方法  所有的實體化物件都可以使用此方法
    People.prototype.say = function() {
        return 'Hello Word'
    }


    let people1 = new People('堯子陌', '24');
    console.log(people1.say());
    let people2 = new People('驚鴻', '24');
    console.log(people2.say());
    console.log(people1.say === people2.say)
</script>

</html>

在這里插入圖片描述

物件原型

每個物件向都會有一個_proto_屬性,指向建構式中的prototype物件,且與之全等的關系

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>物件原型</title>
</head>

<body>

</body>
<script>
    //利用建構式來創建物件
    function People(name, age) {
        this.name = name;
        this.age = age;

    }
    // 在原型上定義方法  所有的實體化物件都可以使用此方法
    People.prototype.say = function() {
        return 'Hello Word'
    }


    let people1 = new People('堯子陌', '24');
    console.dir(People)
        //指向建構式的原型
    console.log(people1.__proto__);
    // 建構式的原型等于實體化物件的物件原型
    console.log(people1.__proto__ === People.prototype);
</script>

</html>

在這里插入圖片描述

constructor建構式

constructor:指向的是參考的建構式,可以讓原型物件重新指向建構式,

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>constructor建構式</title>
</head>

<body>

</body>
<script>
    //利用建構式來創建物件
    function People(name, age) {

        this.name = name;
        this.age = age;

    }
    // 原型
    People.prototype = {
        //將原型物件采用物件賦值的情況下  constructor的指向會變  需要重新手動改回來
        constructor: People,
        say: function() {
            return 'Hello'
        },
        eat: function() {
            return 'Banner'
        }
    }



    let people1 = new People('堯子陌', '24');
    //指向建構式的原型
    console.log(people1.__proto__);
    // 建構式的原型等于實體化物件的物件原型
    console.log(people1.__proto__ === People.prototype);
    console.log(people1.__proto__.constructor);
    console.log(People.prototype.constructor);
</script>

</html>

在這里插入圖片描述

原型物件 實體物件 建構式之間的關系

在這里插入圖片描述

原型鏈

任何物件都會有_proto_屬性,且在js中萬物皆物件,由_proto_屬性連起來的鏈條便叫做原型鏈,且最終值為null

建構式的原型的_proto_屬性指向Object.prototype

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>constructor建構式</title>
</head>

<body>

</body>
<script>
    //利用建構式來創建物件
    function People(name, age) {

        this.name = name;
        this.age = age;

    }
    // 原型
    People.prototype = {
        //將原型物件采用物件賦值的情況下  constructor的指向會變  需要重新手動改回來
        constructor: People,
        say: function() {
            return 'Hello'
        },
        eat: function() {
            return 'Banner'
        }
    }



    let people = new People('堯子陌', '24');

    console.log(people.__proto__.__proto__ === People.prototype.__proto__); //true
    console.log(People.prototype.__proto__ === Object.prototype); //true
    console.log(Object.prototype.__proto__); //null
</script>

</html>

在這里插入圖片描述

js成員的查找機制

  • 當我們訪問一個物件的屬性與方法的時候,首先看這個物件自身有沒有屬性與方法,

  • 如果沒有就開始通過原型物件中的_proto_屬性繼續查找(Object.prototype)

  • 如果還沒有,就以此類推繼續向上查找,直至值為null的時候

簡單而言,就是沿著一條線查找

在這里插入圖片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型鏈成員查找規則</title>
</head>

<body>

</body>
<script>
    function Star(uname, age) {
        this.uname = name;
        this.age = age;

    }

    Star.prototype.sing = function() {
        console.log('會唱歌');
    }

    Star.prototype.sex = '女';
    let YaoZiMo = new Star('堯子陌', '男');
    console.log(YaoZiMo.sex);
    console.log(Object.prototype.sex);
    console.log(YaoZiMo.toString());
    Star.prototype.sing();
    console.log(Object.prototype.toString());
</script>

</html>

在這里插入圖片描述

原型物件中的this指向問題

  • 建構式中的this指的是實體化的物件,
  • 原型中的this指的是實體化物件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型鏈成員查找規則</title>
</head>

<body>

</body>
<script>
    function Star(uname, age) {
        this.uname = uname;
        this.age = age;
        console.log(this);
    }
    var that;
    Star.prototype.sing = function() {
        that = this;
        console.log('會唱歌');
    }
    var YaoZiMo = new Star('堯子陌', '男');
    YaoZiMo.sing()
    console.log(that === YaoZiMo);
</script>

</html>

在這里插入圖片描述

擴展內置物件

可以通過原型物件,對原來的內置物件進行擴展自定義的方法,

注意:內置的陣列和字串等內置物件不能給原型物件覆寫;

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>擴展原型物件的內置方法</title>
</head>

<body>

</body>
<script>
    // 對內置物件擴展自定義的方法
    Array.prototype.sum = function() {
        var sum = 0;
        for (var i = 0; i < this.length; i++) {
            sum += this[i]
        }
        return sum;
    }

    // 查看擴展的原型內置方法
    console.log(Array.prototype);
    var arr = [1, 2, 3];
    console.log(arr.sum());
    var arr2 = new Array(10, 20, 30);
    console.log(arr2.sum());
</script>

</html>

在這里插入圖片描述

call()方法

call()方法可以呼叫函式,并且可以修改this指向,還可以進行傳參,

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>call()方法</title>
</head>

<body>

</body>
<script>
    function fn(x, y) {
        console.log('Hello Word');
        console.log(this);
        console.log(x + y);
    }
    var obj = {
            name: '堯子陌'
        }
        // call()方法  不僅可以呼叫函式 而且可改變函式的this值并且傳遞引數
    fn.call(obj, 1, 2)
</script>

</html>

在這里插入圖片描述

繼承

ES6之前并沒有跟我們提供extends繼承,我們可以通過建構式+原型物件模擬實作繼承,被稱為組合繼承

借用建構式繼承父型別屬性

核心原理:通過call()把父型別的this指向子型別的this,可以實作子型別繼承父型別的屬性

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>借助建構式來實作繼承</title>
</head>

<body>

</body>
<script>
    //父類建構式
    function Father(name, age) {
        // 此時的this指向子類的實體化物件
        console.log(this);
        this.name = name;
        this.age = age;
    }

    //子類建構式
    function Son(name, age, score) {
        //借助call()方法讓父類的this指向子類的實體化物件
        Father.call(this, name, age);
        this.score = score;
    }

    var son = new Son('堯子陌', '18', '100');
    console.log(son);
</script>

</html>

在這里插入圖片描述

借用原型物件繼承父類的方法

思路

  • 子類的prototype原型 = new 父類

  • 因為父類的實體化物件會另外開辟空間,不會影響父類的原型物件,

  • 將子類的constructor重新指向子類的建構式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>借助原型物件類實作繼承</title>
</head>



</body>
<script>
    //父類建構式
    function Father(name, age) {
        // 此時的this指向子類的實體化物件
        console.log(this);
        this.name = name;
        this.age = age;
    }
    Father.prototype.say = function() {
        return 'Hello Word'
    }

    //子類建構式
    function Son(name, age, score) {
        //借助call()方法讓父類的this指向子類的實體化物件
        Father.call(this, name, age);
        this.score = score;
    }
    //子類的原型物件等于父類的的實體化物件
    Son.prototype = new Father();
    // 子類的建構式原型物件的constructor重新指向子類
    Son.prototype.constructor = Son;


    var son = new Son('堯子陌', '18', '100');
    console.log(son.say());
    console.log(son);
</script>

</html>

在這里插入圖片描述

ES6新增陣列方法

迭代(遍歷)方法:forEach(),map(),filter(),some(),every()

forEach()

array.forEach(function(currentValue,index,arr)

  • currentValue:陣列當前項的值
  • index:陣列當前項的索引
  • arr:陣列物件的本身

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>forEach遍歷陣列</title>
</head>

<body>

</body>
<script>
    // 創建一個陣列

    let arr = [1, 2, 3];
    //求和的變數
    var sum = 0;
    arr.forEach(function(value, index, array) {
        console.log(value);
        console.log(index);
        console.log(array);
        sum += value;
        return sum;
    })
    console.log(sum);
</script>

</html>


在這里插入圖片描述

filter()

array.filter(funcction(curentValue,index,arr))

注意:主要用來篩選陣列,回傳的是新陣列

  • currentValue:陣列當前項的值
  • index:陣列當前項的索引
  • arr:陣列物件的本身

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>filter()</title>
</head>
<body>
<script>
    var arr = [20, 50, 80, 100, 150, 500, 600];
    var newArr = arr.filter(function (value, index, array) {
        //篩選大于100的陣列元素,回傳一個新陣列
     return value > 100;
    })
    console.log(newArr)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>filter之篩選陣列</title>
</head>

<body>

</body>
<script>
    // 創建一個陣列

    let arr = [100, 500, 800];
    //求和的變數
    var sum = 0;
    var newArr = arr.filter(function(value, index, array) {

        return value > 100;
    })
    console.log(newArr);
</script>


</html>

在這里插入圖片描述

some()

array.some(funcction(curentValue,index,arr))

注意:主要用來查詢陣列,回傳的是布林值,當查找到第一個滿足條件的陣列元素,則停止查找

  • currentValue:陣列當前項的值
  • index:陣列當前項的索引
  • arr:陣列物件的本身
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>some之查詢陣列</title>
</head>

<body>

</body>
<script>
    var arr = ['grren', 'red', 'yellow'];
    var flag = arr.some(function(value, index, arr) {
        return value == 'yellow'
    })
    console.log(flag);
</script>

</html>

在這里插入圖片描述

查詢商品案例

核心思路

  • 把資料渲染到頁面中(forEach)
  • 根據價格渲染資料(filter)
  • 根據商品名稱渲染資料
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        table {
            width: 400px;
            border: 1px solid #000;
            border-collapse: collapse;
            margin: 0 auto;
        }
        
        td,
        th {
            border: 1px solid #000;
            text-align: center;
        }
        
        input {
            width: 50px;
        }
        
        .search {
            width: 600px;
            margin: 20px auto;
        }
    </style>
</head>

<body>
    <div class="search">
        按照價格查詢: <input type="text" class="start"> - <input type="text" class="end"> <button class="search-price">搜索</button> 按照商品名稱查詢: <input type="text" class="product"> <button class="search-pro">查詢</button>
    </div>
    <table>
        <thead>
            <tr>
                <th>id</th>
                <th>產品名稱</th>
                <th>價格</th>
            </tr>
        </thead>
        <tbody>


        </tbody>
    </table>
    <script>
        // 利用新增陣列方法操作資料
        var data = [{
            id: 1,
            pname: '小米',
            price: 3999
        }, {
            id: 2,
            pname: 'oppo',
            price: 999
        }, {
            id: 3,
            pname: '榮耀',
            price: 1299
        }, {
            id: 4,
            pname: '華為',
            price: 1999
        }, ];


        //1.獲取對應的元素
        let tbody = document.querySelector('tbody');
        let search_price = document.querySelector('.search-price');
        let start = document.querySelector('.start');
        let end = document.querySelector('.end')
        let product = document.querySelector('.product');
        let search_pro = document.querySelector('.search-pro')

        //2.將資料渲染到頁面中
        setDate(data)

        function setDate(MyDate) {
            tbody.innerHTML = ''
            MyDate.forEach(function(value, index, array) {
                var tr = document.createElement('tr');
                tr.innerHTML = '<td>' + value.id + '</td><td>' + value.pname + '</td><td>' + value.price + '</td>';
                tbody.appendChild(tr)
            })
        }

        //2.根據商品查詢價格模塊
        search_price.addEventListener('click', function() {

            var newDate = data.filter(function(value, index, array) {
                    return value.price >= start.value && value.price <= end.value
                })
                //   再次渲染資料
            setDate(newDate)

        })

        //3.查找商品
        search_pro.addEventListener('click', function() {
            var arr = [];
            data.some(function(value, index, array) {
                if (value.pname === product.value) {
                    arr.push(value)
                    return true
                }
            })
            setDate(arr)
        })
    </script>
</body>

</html>

在這里插入圖片描述

forEach() filter() some()的區別

篩選陣列元素的情況下 some()效率更高

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>forEach() filter() some()的區別</title>
</head>

<body>

</body>
<script>
    let arr = ['grren', 'yellow', 'red']
        // 利用forEach篩選陣列元素
    arr.forEach(function(value, index, array) {
            if (value == 'yellow') {
                console.log('已找到元素');
                return true
            }
            console.log('forEach');
        })
        // 利用filter篩選元素
    arr.filter(function(value, index, array) {
            if (value == 'yellow') {
                console.log('已找到元素');
                return true
            }
            console.log('filter');
        })
        // 利用some篩選元素
    arr.some(function(value, index, array) {
        if (value == 'yellow') {
            console.log('已找到元素');
            return true
        }
        console.log('some');
    })
</script>

</html>

在這里插入圖片描述

字串方法

trim()

trim()方法可以去除字串兩側的空白

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>trim()</title>
</head>

<body>
    <input type="text">
    <button>提交</button>
    <div></div>
</body>
<script>
    var str = '  andy   ';
    console.log(str.length);
    var str1 = str.trim();
    console.log(str1);
    console.log(str1.length);

    var input = document.querySelector('input');
    var bth = document.querySelector('button');
    var box = document.querySelector('div');

    bth.addEventListener('click', function() {
        var str2 = input.value.trim();
        if (str2 === '') {
            alert('內容為空')
        } else {
            box.innerHTML = str2
        }
    })
</script>

</html>

在這里插入圖片描述

物件方法

Object.keys()

Object.keys():將目標物件的所有屬性保存為陣列

Object.keys(obj)

  • 效果類似for…in
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Object.keys()</title>
</head>

<body>

</body>
<script>
    // Object.keys():可將目標物件所有的屬性保存為陣列
    var obj = {
        name: '堯子陌',
        age: 24,
        sex: '男'

    }
    console.log(Object.keys(obj));
</script>

</html>

在這里插入圖片描述

Object.defineProperty()

定義新屬性或修改為原來的屬性 :Object.defineProperty(obj,prop,descriptor)

  • obj:必需 目標物件
  • prop:必需:定義或修改屬性的名字
  • descriptor:必需,目標屬性所必需有的屬性

descriptor說明


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Object.defineProperty()</title>
</head>

<body>

</body>
<script>
    var obj = {
        id: 'zero',
        name: '堯子陌',
        age: '25',

    }

    // 新增屬性
    Object.defineProperty(obj, 'sex', {
        value: '男'
    })
    console.log(obj);


    Object.defineProperty(obj, 'id', {
        //不允許id屬性被修改
        writable: false
    })
    Object.defineProperty(obj, 'address', {
        enumerable: false,
        writable: false,
        configurable: false
    })
    console.log(Object.keys(obj));
</script>

</html>

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/293748.html

標籤:其他

上一篇:模擬樓宇掃光效果(three.js實戰12)

下一篇:ES6 (二十九)ES6最新提案、do、throw、函式部分執行、管道運算子|>、柯里化、::、Realm API

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more