美文网首页
JS 原型链随笔(一)

JS 原型链随笔(一)

作者: 平凡的lily | 来源:发表于2018-08-10 10:52 被阅读0次

    JS 原型链随笔(一)

    一直在考虑,自己的第一篇随笔究竟该写点什么好。但是最后还是决定用一篇基础知识作为开头。

    原型链的五条规则:

    1.所有的引用类型(数组、对象、函数),都具有对象特性,即可以自由扩展属性(除了'null'外)。

    2.所有的引用类型(数组、对象、函数),都有一个__proto__属性,属性值是一个普通的对象。

    3.所有的函数,都有一个prototype属性,属性值也是一个普通的对象。

    4.所有的引用类型(数组、对象、函数)的__proto__属性值指向它的构造函数的prototype属性。

    5.当试图得到一个对象的某个属性时候,如果这个对象本身没有这个属性,那么会去它的__proto__属性中找。也就是向它的构造函数的'prototype'属性中寻找。

    妈呀,听完这5条怎么感觉什么都没有记住。。。。。。下面就来一段白话文解释。

    这里需要注意,所有引用类型都有一个构造函数,同时所有的函数都有一个prototype属性,给函数添加prototype属性是浏览器帮我们做的。当然构造函数也是函数的一部分,平时我们定义的普通函数也是函数,只是作为构造函数的函数名我们一般习惯首字母大写。

    浏览器给引用类型扩展了一条属性__proto__(平时我们称之为隐式原型),这是可以理解的,因为本来引用类型就可以自由扩展属性,这个__proto__就是浏览器帮我们扩展的嘛。但是值得注意的是,这里的__proto__属性的指向,它指向该引用类型的构造函数的prototype(平时我们称之为显示原型)。

    下面是我在chrome中测试的代码,前端环境就是这么方便,每次验证什么随便打开一个网页打开console就行了。

    这段代码简单地验证了1,2,3,4,5条。

    这里需要注意的两小点是,函数也是引用类型哈,所以也可以任意扩展属性。还有像{},[],function是引用类型,是引用类型就有构造函数,那么它们的构造函数是谁呢,就是js内置函数Object,Array,Function哈。

    哇,这么快一页就满了,一个小时过去了。希望自己坚持,每天更新一小篇。

    相关文章

      网友评论

          本文标题:JS 原型链随笔(一)

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