private 与 #private 的比较
💡
原文英文,约1700词,阅读约需7分钟。
📝
内容提要
本文讨论了在TypeScript中使用private关键字和在ECMAScript中使用#符号实现私有属性和方法的区别。在TypeScript中,private关键字只在编译时起作用,而在JavaScript中不起作用;而在ECMAScript中,#符号是真正的私有属性,JavaScript引擎在运行时会强制执行私有性。作者提出了一个约定,即对于绑定方法使用ES private,对于属性的后备字段使用ES private,其他情况使用TypeScript private。此外,文章还讨论了JavaScript中this关键字的工作原理以及在回调函数中正确使用this。最后,作者提到了在Vue中使用private和#的区别。
🎯
关键要点
- TypeScript中的private关键字在编译时有效,但在JavaScript中无效。
- ECMAScript中的#符号实现真正的私有属性,JavaScript引擎在运行时强制执行私有性。
- 建议:绑定方法使用ES private,属性后备字段使用ES private,其他情况使用TypeScript private。
- this关键字的值在函数调用时确定,通常由调用方式决定。
- 在严格模式下,this的值为undefined,而非严格模式下为全局对象。
- 使用.bind方法可以预设this的值,箭头函数的this值在创建时确定。
- 在回调函数中,this的值通常为undefined,需要使用绑定方法解决。
- 在Vue中,使用private和#的区别在于Proxy对象的影响,#属性无法从外部访问。
- 使用private在JavaScript中并不是真正的私有,可能会导致访问问题。
🏷️
标签
➡️