JS- 构造函数、原型链

本文介绍了JavaScript中的构造函数概念,包括如何使用this指针以及new操作符创建实例。接着讨论了原型,如何在原型上定义属性和方法,以及实例如何调用这些属性和方法。此外,还阐述了原型链的工作机制,从实例查找属性的过程,以及在实例中修改属性不会影响原型属性的独立性。
摘要由CSDN通过智能技术生成

1- 构造函数

    <script>
        // 构造函数
        function Person(name1,age1){
            this.name = name1;
            this.age = age1;
            this.sayName = function(){
                console.log(this.name);
            }
        }

        var p1 = new Person("bizhenyu",18);
        p1.sayName()
        var p2 = new Person("b1zhenyu",19);
        console.log(p1,p2);

        // p1是实例对象
        // p1.__proto__.constructor 实例对象对应的构造函数
        console.log(p1.__proto__.constructor);
        console.log(p1.constructor);

    </script>

一、构造函数中有this指针 

二、使用构造函数创建实例时必须使用new

p1.__proto__.constructor == p1.constructor

三、原型的constructor与实例的constructor同时指向构造函数

2- 原型

    <script>
        function Person(name,age){
            this.name = name;
            this.age = age;
        }

        Person.prototype.type="human";
        Person.prototype.sayName=function(){
            console.log("我的名字是",this.name);
        }

        var p1 =new Person("张三",18);
        var p2 =new Person("张八",15);
        console.log(p1,p2);
        p1.sayName();
        p2.sayName();
        var temp = p1.type;
        console.log(temp);
    </script>

一、首先创建构造函数

function Person(name,age){

            this.name = name;

            this.age = age;

        }

 二、其次定义原型中的属性和方法

 Person.prototype.type="human";

 Person.prototype.sayName=function(){

            console.log("我的名字是",this.name);

        }

三、创建实例 

 var p1 =new Person("张三",18);

 var p2 =new Person("张八",15);

 四==>实例可以调用原型的属性和方法

var temp = p1.type;

        console.log(temp);

p1.sayName();

p2.sayName();

3- 构造函数查找属性的过程 

        // 1-->p1会在自己身上找

        // 2-->创建p1的构造函数的原型上找(原型是对象)

        // 3-->原型的原型上找

        // 4-->null-->undefined

4- 原型链

 <script>
        function Person(name){
            this.name = name;
        }

        
        Object.prototype.b = "Object原型的属性"


        Person.prototype ={
            a:'Person原型的属性',
            name:'xxx'
        }



        var p = new Person("bizhenyu");
        console.log(p);
        console.log(p.name);
        console.log(p.a);
        console.log(p.b);

        var a = Person.prototype.__proto__
        console.log(a);


        p.name='我是我,我是实例,我改了我的name,与原型无关'
        console.log(Person.prototype.name);
        console.log(p.name);



    </script>

一、首先创建构造函数

        function Person(name){

            this.name = name;

        }

二、其次创建原型对象(原型)

        Person.prototype ={

            a:'Person原型的属性',

            name:'xxx'

        }

 三、创建构造函数的原型的原型

Object.prototype.b = "Object原型的属性"

 四、创建实例

 var p = new Person("bizhenyu");

 五、第一次输出打印

        console.log(p);

        console.log(p.name);

 

        console.log(p.a);

 

        console.log(p.b);

 

 六、创建a,原型的原型,打印输出看看有啥

 var a = Person.prototype.__proto__

        console.log(a);

 

 七、关键点:在实例中修改属性,不会对原型属性产生影响

        p.name='我是我,我是实例,我改了我的name,与原型无关'

        console.log(Person.prototype.name);

        console.log(p.name);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值