登录  /  注册
博主信息
博文 35
粉丝 0
评论 0
访问量 42966
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Javascript-面向对象&jquery基本知识1-2019年10月23日
Victor的博客
原创
850人浏览过

练习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>
运行实例 »
点击 "运行实例" 按钮查看在线实例



批改状态:合格

老师批语:js中的对象是个另类, 理解有难度, 加油
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学