当前位置:  开发笔记 > 编程语言 > 正文

在javascript中,我可以覆盖括号来访问字符串中的字符吗?

如何解决《在javascript中,我可以覆盖括号来访问字符串中的字符吗?》经验,为你挑选了2个好方法。

有什么方法可以定义String[int]以避免使用String.CharAt(int)



1> keparo..:

不,没有办法做到这一点.

这是来自其他语言的JavaScript开发人员的常见问题,其中可以为特定类型定义或覆盖运算符.

在C++中,它不是完全不可能的超载operator*有关MyType,与涉及类型的对象操作的独特的星号操作结束了MyType.这种做法的可读性可能仍会受到质疑,但是语言仍然可以提供.

在JavaScript中,这是不可能的.您将无法定义允许您String使用括号索引字符的方法.

@Lee Kowalkowski提出了一个很好的观点,即在某种程度上,它可以使用括号访问字符,因为括号可用于访问JavaScript的成员Array.这将涉及创建一个新的Array,使用字符串的每个字符作为其成员,然后访问Array.

这可能是一种令人困惑的方法.JavaScript的某些实现将通过括号提供对字符串的访问,而有些则不会,因此它不是标准做法.该对象可能会混淆一个字符串,并且由于JavaScript是一种松散类型的语言,因此存在歪曲类型的风险.定义一个数组仅仅是为了使用与语言已经提供的语法不同的语法,只是为了促进这种类型的混淆.这引起了@Andrew Hedges的问题:"为什么要对抗这种语言?"

JavaScript中有一些有用的模式用于合法的函数重载多态继承.这不是一个例子.

除了所有语义之外,运营商仍然没有被覆盖.

旁注:习惯于强类型检查和经典继承惯例的开发人员有时会被JavaScript的C系列语法所困惑.在引擎盖下,它以一种不熟悉的方式工作.最好以干净和明确的方式编写JavaScript,以防止混淆.



2> Lee Kowalkow..:

请注意:其他人想要将我的答案投票之前,我回答的问题是:

IE javascript字符串索引器

有没有什么方法可以定义string [int]以避免使用string.CharAt(int)?"

没有关于具体覆盖括号,语法或最佳实践的问题,这个问题只是要求"某种方式".(唯一的另一个答案是"不,没有.")


嗯,实际上,有点:

var newArray = oldString.split(''); 

...现在您可以使用括号表示法访问newArray,因为您刚刚将其转换为数组.


抱歉来回.我的观点是,您无法以任何方式定义括号运算符.这就是这个问题的核心.在某些语言中,开发人员可以自由地执行此操作,从其他社区访问javascript的开发人员想知道是否可能.不是.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有