美文网首页javascipt
面向对象与this指向

面向对象与this指向

作者: 杰克_王_ | 来源:发表于2019-10-20 14:10 被阅读0次
<!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>面向对象与this指向</title>
</head>

<body>
    <script>
        var obj = { name: "jieke" };
        var timeout = setTimeout(function () {
            obj = Object.assign(obj, { age: 20 });
            console.log(obj);
            console.log(this);
            clearTimeout(timeout);
        }, 2000);
        console.log(obj);
    </script>

    <script>
        var obj = {
            startActon() {
                // debugger;
                this.property = {
                    name: "jieke",
                    age: 20
                };

                this.callSetTimeout();
            },
            callSetTimeout() {
                // debugger;
                var timeout = 1000;

                // 箭头函数没有自己的作用域
                this.timeout = setTimeout(() => {
                    debugger;
                    console.log(this.property);
                }, timeout);

                // 使用bind函数传递this
                // this.timeout = setTimeout(function () {
                //     console.log(this.property);
                // }.bind(this), timeout);

                // 使用自定义变量传递this
                // var that = this;
                // this.timeout = setTimeout(function () {
                //     console.log(that.property);
                // }, timeout);
            },
            endAction() {
                // debugger;
                console.log(this.property);
                clearTimeout(this.timeout);
            }
        };

        obj.startActon();

        var interval = setInterval(() => {
            debugger;
            obj.endAction();
            clearInterval(interval);
        }, 2000);
    </script>

    <script>
        // 构造函数,约定首字母大写,普通函数首字母小写
        // 如果直接使用,相当于普通函数,this指向windows对象
        // 如果使用 new 创建一个新的对象,则this指向这个新创建的对象
        // 属性放在函数内部,方法放在原型上,new 时对象只会占用属性的空间,不会占用方法的空间
        function ConstructionFunc(obj) {
            var initObj = {
                name: "jieke",
                age: 20
            };
            this.property = Object.assign({}, initObj, obj);
        }

        ConstructionFunc.prototype = {
            startActon: function () {
                // debugger;
                this.callSetTimeout();
            },
            callSetTimeout: function () {
                // debugger;
                var timeout = 1000;

                // 箭头函数没有自己的作用域
                this.timeout = setTimeout(() => {
                    debugger;
                    console.log(this.property);
                }, timeout);

                // 使用bind函数传递this
                // this.timeout = setTimeout(function () {
                //     console.log(this.property);
                // }.bind(this), timeout);

                // 使用自定义变量传递this
                // var that = this;
                // this.timeout = setTimeout(function () {
                //     console.log(that.property);
                // }, timeout);
            },
            endAction: function () {
                // debugger;
                console.log(this.property);
                clearTimeout(this.timeout);
            }
        }

        var obj = new ConstructionFunc({ sex: "man" });
        obj.startActon();

        var interval = setInterval(() => {
            debugger;
            obj.endAction();
            clearInterval(interval);
        }, 2000);
    </script>
</body>

</html>

相关文章

  • 面向对象与this指向

  • 面向对象:JavaScript

    面向对象 面向对象组成 this指向 第一个面向对象 第一个面向对象加强版 第一个面向对象(this) 原型 原型...

  • 面试题的总结与解答

    1,js中this指向的理解 在js面向对象编程里我们避免不了使用this,所以理解this指向对于在面向对象编程...

  • lesson 5 面向对象及原型链 2021-04-29

    课程标题 面向对象及原型链 课程目标 面向对象思想 原型及原型链 继承 知识点 面向对象思想 原型链的指向 new...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

  • 面向对象_初识

    目录 面向对象编程介绍 类与对象介绍 私有属性与私有方法 面向对象编程 1. 面向对象编程介绍 面向对象编程:Ob...

  • 2019-07-03

    面向对象 面向对象与面向过程 面向对象就是将你的需求抽象成一个对象, 然后针对这个对象分析其特性(属性)与动作(方...

  • 关于面向对象中this指向问题

    this指向 今天就和大家来探讨一下在js面向对象中的这个this的指向问题, 一般来讲在函数中this的指向是当...

  • Java复习笔记——系统整理

    一、面向对象概念 1. 类与对象 1.1 面向过程和面向对象 面向过程 (Procedural Programmi...

  • 2、面向对象

    一、面向对象 定义:面向对象是基于面向过程的。 面向对象与面向过程比较:面向过程:面向过程是以函数为基础,完成各种...

网友评论

    本文标题:面向对象与this指向

    本文链接:https://www.haomeiwen.com/subject/autamctx.html