gpt4 book ai didi

javascript - Kotlin 允许扩展现有类型是好事吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:39 27 4
gpt4 key购买 nike

Kotlin 支持现有类型的扩展。比如我们can do this :

fun String.replaceSpaces(): String {
return this.replace(' ', '_')
}

val formatted = str.replaceSpaces()

但是在 JavaScript 中 this is an antipattern .

Kotlin 是否回避了这在 Javascript 中引起的问题?

最佳答案

不,这不是反模式。在 js 中,它是一种反模式,因为 js 是动态的,因此更改原型(prototype)会改变代码在运行时 的工作方式,使其成为一种反模式。根据 in 运算符的工作方式以及您可以重写所有内容 的事实,这也是极其危险的,因此更改原型(prototype)可能会影响页面上某处的代码:

Number.prototype.toString = function(){
return "bullshit";
};

alert(""+12);

在 kotlin 中情况并非如此,因为 kotlin 是静态的,并且所有引用都是在编译时 构建的。此外,您不能覆盖现有方法,因此它一点也不危险。

关于javascript - Kotlin 允许扩展现有类型是好事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com