💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## 1.如何理解原型链 > 1.所有引用类型都具有对象特性,即可自由扩展属性(除了null) > 2.所有引用类型都有一个_proto_属性,属性值都是一个普遍对象 > 3.所有函数都有一个prototype属性,属性值也是一个普遍对象 > 4.所有引用类型的_proto_属性值都指向它的构造函数的prototype属性值 > 5.当使用对象属性时,如果对象本身没有这个属性,那么它就会去它的的_proto_(即它的构造函数的prototype)中寻找 ## 2.构造函数 > 以大写字母开头的函数被认为是构造函数 ``` function Foo(){...} --> var Foo = new Function(...) var a = [] ---> var a = new Array () var b = {} ---> var b = new Object () ``` ### 构造函数的判断`instanceof` ``` Array instanceof object ``` ### 扩展基本数据类型 ``` typeof 37 === 'number' console.log( typeof(37) ) ``` ## 3.dom封装理解原型链 ### 构造函数 以大写字母开头 ``` // 封装获取Dom节点 function Elem(id){ this.elem = document.getElementById(id) } //封装改变dom节点内容 Elem.prototype.html = function(val){ var elem = this.elem if(val){ elem.innerHTML = val return this }else{ return elem.innerHTML } } //封装监听事件 Elem.prototype.on = function(type,fn){ this.elem.addEventListener(type,fn) return this } // new一个实例对象 var div1 = new Elem("div1") // console.log(div1.html('<p>ni hao</p>')) div1.on("onclick",function(){ alert("nhao") }) ```