安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性

目录

  • 1. javascript里什么是this
    • this的使用场合
  • 2.JS中的prototype
    • constructor 属性

1. javascript里什么是this

this是js中的一个关键字,它是函数在运行时生成的一个内部对象,是属性和方法。
this就是属性或方法“当前”所在的对象,也就是调用函数的那个对象

this的使用场合

1.函数调用

    <script>
        var a=100;
        function test(){
            this.a=200;
            console.info(this,this.a);
        }
        //this代表当前对象
        test();
    </script>

浏览器运行

在这里插入图片描述

2.对象的方法中

var test1 = {
            a:0,
            ceshi:function(){
                this.a+=5;
            },
        }
        test1.ceshi();
        console.info("a="+test1.a);

浏览器运行
安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性_第1张图片

3.构造函数

        //构造函数
        function fruit(name,weight){
            this.name=name;
            this.weight=weight;
        }
        //在构造器中this指的对象就是fru,构造器实例化的那个对象
        var fru = new fruit("apple",20);
        console.info(fru);
        

浏览器运行
安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性_第2张图片

2.JS中的prototype

每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法。
通过构造函数生成对象实例时,会将对象实例的原型指向构造函数的prototype属性。每一个构造函数都有一个prototype属性,这个属性就是对象实例的原型对象。
实例:
安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性_第3张图片

函数才有prototype,对象没有。不过函数有__proto__,因为函数本质是对象。函数中__proto__指向Function.prototype。
实例:
安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性_第4张图片

constructor 属性

constructor属性始终指向创建当前对象的构造函数
实例:
安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性_第5张图片

函数有一个默认的属性prototype,这个prototype的constructor默认指向这个函数,属于是继承关系。
实例:
安全杂记 - 浅析js中的this关键字,原型链prototype,constructor 属性_第6张图片

你可能感兴趣的:(javascript)