Blogger Information
Blog 35
fans 0
comment 0
visits 44285
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Javascript-面向对象&jquery基本知识1-2019年10月23日
Victor的博客
Original
877 people have browsed it

练习javascript面向对象的基本使用、初步了解jquery基础知识

练习课堂知识:

1、感觉js的面向对象都是基于prototype的属性实现,而且写法非常多且怪异,继承问题看不懂。ES6之后又包装出class关键字,至少写法上感觉正常了不少。对初学者造成的困惑是:实际应用中,哪些场景用类来实现?该用什么语法来写?

2、jq初步知道选择器的语法形式,CSS样式的动态修改。

练习代码如下:

实例
<!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">
    <script src="../static/jquery-3.4.1.js"></script>
    <title>js 面向对象</title>
</head>

<body>
    <div id="div1" class="div1" style="background: red;width:100%;height:50px;"></div>
    <p id="p1" class="p1" style="background: green;width:100%;height:50px;"></p>
    <button onclick="change_color_div()">改变DIV颜色</button>
    <script>
        var res = document.getElementById('p1');

        var res = document.getElementsByClassName('p1');

        console.log(res);


        var val = 3;

        function func() {
            // val = 5;
            var val = 5;
        }
        func();
        // alert(val);
        //----------------------------------------------------------------

        var obj = new Object();
        obj.rand = function() {
            console.log(Math.random());
        }
        obj.rand();

        obj.name = 'PHP';
        console.log(obj.name);
        obj.sum = function(num1, num2) {
            return num1 + num2;
        }
        console.log(obj.sum(2, 3));

        //----------------------------------------------------------------

        var obj = {};
        obj.name = 'php';
        console.log(obj.name);
        obj.rand = function() {
            console.log(Math.random());
        }
        obj.rand();

        ///----------------------------------------------------------------

        var obj3 = {
            name: 'javascript',
            rand: function() {
                console.log(Math.random());
            },
            sun: function(num1, num2) {
                return num1 + num2;
            }
        };
        obj3.abc = 'new add';
        alert(obj3.abc);
        //----------------------------------------------------------------

        var obj = {
            table: 'test',
            find: function() {
                return this.table;
            },
            where: function() {
                return this;
            }
        };
        var obj2 = obj;
        obj2.table = 'this is obj2.table';
        console.log(obj2.where().find());
        console.log(obj.where().find());

        //----------------------------------------------------------------
        //使用function也可以实现类
        function User() {
            this.name = 'Function实现类';
            this.getName = function() {
                return this.name;
            }
            this.rand = function() {
                console.log(Math.random());
            }
        }
        var user = new User;
        // alert(user.name);
        // alert(user.getName());
        user.rand();
        //-----------------------------------------------------------------
        //使用prototype关键字和this关键字实现

        function ObjClass(name) {
            this.name = name;
            this.age = 18;
        }
        ObjClass.prototype = {
            getName: function() {
                return this.name;
            }
        }

        var obj5 = new ObjClass('西门老师');
        alert(obj5.getName());
        //-----------------------------------------------------------------
        User2 = {
            name: '西门老师',
            getName: function() {
                return this.name;
            }
        }
        var user3 = Object.create(User2);
        alert(user3.getName());
        //----------------------------------------------------------------
        //使用prototype实现继承;
        function extend(Sub, Sup) {
            var F = function() {

            }
            F.prototype = Sup.prototype;
            Sub.prototype = new F();
            Sub.prototype.constructor = Sub;
            Sub.sup = Sup.prototype;
            if (Sup.prototype.constructor === Object.prototype.constructor) {
                Sup.prototype.constructor = Sup;
            }
        }
        //----------------------------------------------------------------
        // 工厂模式
        function Person(name, age, job) {
            var O = new Object();
            O.name = name;
            O.age = age;
            O.job = job;
            O.sayName = function() {
                alert(this.name);
            };
            return O;
        }
        var person1 = Person('Nacy', 28, 'Engineer');
        var person2 = Person('Victor', 25, "Doctor");

        //-----------------------------------------------------------------
        //组合使用构造函数模式和原型模式(最常用)
        function Parent(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.friends = ['aa', 'bb'];
        }
        Parent.prototype = {
            constructor: Parent,
            sayName: function() {
                alert(this.name);
            }
        }
        var son1 = new Parent('AAA', 18, 'AAAJob');
        var son2 = new Parent('BBB', 20, 'BBBJob');
        son1.friends.push('cc');
        alert(son1.friends);
        alert(son2.friends);
        //---------------------------------------------------------------------------

        //  封装DOM查询的原型链继承的例子

        function Elem(id) {
            this.elem = document.getElementById(id);
        }

        Elem.prototype.html = function(val) {
            var elem = this.elem;
            if (val) {
                elem.innerHTML = val;
                return this; // 链式操作
            } else {
                return elem.innerHTML;
            }
        }

        Elem.prototype.on = function(type, fn) {
            var elem = this.elem;
            elem.addEventListener(type, fn);

            return this;
        }

        // 用法
        var box = new Elem('div1');
        console.log(box.html());

        box.html("<p>hello world</p>").on('click', function() {
            console.log('click');
        }).html("<p>hello javascript</p>")

        //--------------------------------------------------------------------------
        //ES6提供了class关键字

        class Animal {
            constructor(name) {
                this.name = name;
            }
            speak() {
                console.log(this.name);
            }
        }
        class Dog extends Animal {
            speak() {
                console.log(this.name);
            }
        }
        let d = new Dog();
        d.name = 'wangwang';
        d.speak();

        class Cat {
            constructor(name) {
                this.name = name;
            }

            speak() {
                console.log(this.name);
            };
        }

        class Lion extends Cat {
            speak() {
                super.speak();
            }
        }
        let l = new Lion();
        l.name = 'shizi';
        l.speak();
        //-------------------------------
        class Point {
            constructor() {
                // ...
            }
        }

        Object.assign(Point.prototype, {
            toString() {},
            toValue() {}
        });
        let methodName = "getArea";
        class Square {

            constructor(length) {
                this.length = length;
                console.log(this.length);
            }

            [methodName]() {
                console.log('表达式当做方法名');
            }
        }
        let s = new Square(20);
        

        //---------------------------------------------------------------------------
        function change_color_div() {
            $('#div1').css('background', '#ff00ff');
        }
        var arr = [1, 5, 3, 6, 9, 8];
        $.each(arr, function(i, v) {
            if (v == 3 || v == 6) {
                return true;
            }
            console.log('index:' + i + 'value:' + v);
        });
    </script>
</body>

</html>
运行实例 »
点击 "运行实例" 按钮查看在线实例



Correction status:qualified

Teacher's comments:js中的对象是个另类, 理解有难度, 加油
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post