3.27(原型链初体验)

一:前言

  JS高级的学习是将我们从会写代码到知道他的一些细节原理的过渡,截至目前JS高级的学习中我从原型链中有很多体会,在说体会之前首先我们要知道原型的一些东西。我们都知道JS中是通过原型链(隐式原型链)实现的继承功能,他的主要作用就是提高代码的复用性。

二:准备

    在说具体内容之前我们要明白一个东西,就是Object()是Function()的一个实例,而Function()又是自己的实例。原型是Object的实例,所以所有原型的__proto__属性直接指向Object的原型,而Object也是对象,但是它已经是最终的版本了,所以它的__proto__属性是null。
    函数特有的属性是prototype和constructor属性,而实例对象特有的是__proto__,又因为函数也是对象,所以函数也有__proto__属性。

三:内容

    在明白这些东西之后我们就可以讲一下原型了

//声明一个构造函数Fn(它是Fnuction的实例)
	function Fn(){
            this.text1=function(){
                console.log("text1")
            }
        }
        //往构造函数Fn中添加函数text2
        Fn.prototype.text2=function(){
            console.log("text2")
        }
        //fn是Fn的一个实例对象(不是函数,只具备__proto__属性)
        var fn=new Fn()
        fn.text1()
        fn.test2()
        console.log(fn.toString())//通过隐式原型链可以找到该属性
        console.log(Fn.prototype)//结果中有添加的text2函数
        console.log(Fn.prototype.__proto__===Object.prototype)//true
        fn.text3()//报错,因为在所有的原型中都没有text3属性,最终找到的是null,但null不能作为函数调用

下面我们来看一下它的图解:
在这里插入图片描述
由于篇幅原因,这次只是简单的说明一下原型链,后续会为大家带来完整的原型链讲解。

四:总结

    原型链的理解还是有难度的,因为很多细节的东西我们需要考虑,实在不行就画个图理解一下,画的多了就自然会了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值