什么是原型对象与原型链

要了解原型对象,先了解对象

数据类型
undefined、null、boolean、number、string、object
引用类型String,Number,Boolean,Object,Function,Array,Data,RegExp,Error

我们可以使用九中引用类型来创建对象实例

原型对象

创建三个对象

        var str = new String('abc')
        console.log(str)

        var num = new Number(123)

        console.log(num)

        var obj = new Object()
        obj.name = "张三"

        console.log(obj)

在这里插入图片描述每一个实例对象都有自己的__proto__属性指向创建自己的原型对象。
在这里插入图片描述每个原型对象也有着自己的原型对象——object,object是所以对象的最终原型。
除了__proto__属性外还有个prototype属性,这个也是用来指向原型的,不过是给创建对象的引用类型使用的,指向自己

console.log(str.__proto__ === String.prototype)//true

而原型对象也可以使用一个叫做constructor属性找到创建自己孩子的对象

console.log(str.constructor === String)//true

js new一个对象的过程

  function mon(name) {
            this.name = name
        }
        var son = new mon()

1、创建一个新对象:son
2、新对象会执行一个[[prototype]]连接

son.__proto__=mon.prototype

3、对象实例和对象的this会绑定起来
4、执行对象中的代码

 this.name = name

5、如果函数没有返回值,就是返回新对象

什么是原型链


        function supermarket() {

        }
        supermarket.prototype.product = "salks"

        console.log(supermarket.prototype)

        function shop() {}

        shop.prototype = new supermarket()

        console.log(shop.prototype)

        var person = new shop()

        console.log(person.product)

在这里插入图片描述在这里插入图片描述说明:我并没有在shop中定义product,按理说它应该为空,但是我让shop的原型对象指向supermarket的实例,它就会去supermarket中寻找有没有product属性。
作用:我们可以利用这特性实现类的继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值