Ole*_*Ole 4 javascript java kotlin
Kotlin支持扩展现有类型.例如,我们可以这样做:
fun String.replaceSpaces(): String {
return this.replace(' ', '_')
}
val formatted = str.replaceSpaces()
Run Code Online (Sandbox Code Playgroud)
但是javascript 这是一个反模式.
Kotlin是否回避了Javascript导致的问题?
不,这不是反模式.在js中它是一个反模式,因为js是动态的,因此更改原型会改变代码在运行时的工作方式,使其成为反模式.根据in运算符的工作方式以及基于可以重写所有内容的事实,这也非常危险,因此更改原型会影响页面上的某些代码:
Number.prototype.toString = function(){
return "bullshit";
};
alert(""+12);
Run Code Online (Sandbox Code Playgroud)
在kotlin中,情况并非如此,因为kotlin是静态的,并且所有引用都是在编译时构建的.此外,您无法覆盖现有方法,因此它根本没有危险.
归档时间: |
|
查看次数: |
444 次 |
最近记录: |