蓝本和蓝本链是js中的基本上原理。下面他们介绍呵呵蓝本的基本上用语。
具体来说表述四个第一类,接着推论x、y、z与否能透过a第一类出访。标识符如下表所示:
let a ={ x:x } let b ={ y:y } let c ={ z:z } console.log(x in a) console.log(y in a) console.log(z in a)输入结论为 true、false、false。
即使x是a的特性因此回到为true。x、z不属于a的特性因此回到为false
接着他们对标识符展开了修正,标识符如下表所示:
let a ={ x:x } let b ={ y:y } let c ={ z:z } Object.setPrototypeOf(a,b) Object.setPrototypeOf(b,c) console.log(x in a) console.log(y in a) console.log(z in a)输入结论为 true、true、true。
下面的标识符中采用js内建的方式Object.setPrototypeOf将a第一类的蓝本第一类设成b第一类,接着用反之亦然的方式将b第一类的蓝本设成c第一类。
接着推论a上的x特性时,具体来说搜寻a第一类的这类与否存有x特性,即使x特性存有,因此暂停搜寻,回到为true。
接着推论a上的y特性时,具体来说搜寻a第一类的这类与否存有y特性,即使不存有,因此竭尽全力搜寻a第一类的蓝本b第一类是否存有y特性。即使y特性存有,因此暂停搜寻,回到为true。
接着推论a上的z特性时,具体来说搜寻a第一类的这类与否存有z特性,即使不存有,因此竭尽全力搜寻a第一类的蓝本b第一类与否存有y特性。即使y特性不存有,因此竭尽全力搜寻b第一类的蓝本c第一类与否存有z特性。即使z特性存有,因此暂停搜寻,回到为true。
他们能看到a第一类的蓝本b其实也是一个第一类,b第一类的蓝本c也是一个第一类,在js执行环境中第一类的蓝本特性是内建特性,他们无法直接出访。另外搜索第一类的一个特性的过程,总是先搜寻第一类这类,接着再搜索第一类的蓝本,接着再搜索蓝本的蓝本。。。这样就形成了蓝本链