🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
\_\_proto\_\_就是一个典型的“ 私有属性”。 一个对象的\_\_proto\_\_属性指向该对象的原型,虽然他存在于对象的属性列表中,但是却不希望程序员直接用代码去操作他。 甚至有的浏览器就在实现上限制访问\_\_proto\_\_。 实际上,在对象上的“ 私有属性”跟普通属性是一样的,但是有的对象被构造出来,存在着不希望被人直接修改的部分。 作为约定,JS程序员把一个前后都是【\_\_】符号的变量作为一个对象的私有属性。 因此,不直接访问私有属性的原因可以归结为两点: * 一是避免破坏了对象的状态,产生预期外的行为。 * 二是兼容不同的运行环境。 ~~~ var foo = {}; foo.__proto__ = null; foo.toString()//foo.toString is not a function ~~~