快捷搜索:

有关String.prototype

2019-10-08 作者:2019精准正版资料   |   浏览(181)

做项目标时候开采贰个标题,大家项目里面前蒙受js的String的原型对象实行了扩展

比如

String.prototype.formatStringRN = function (){ var cd = this; if  { cd = cd.replaceAll('rn', '<br//>').replaceAll('n', '<br//>').replaceAll('r', '<br//>'); } return cd;};

那是原先项目里的代码,效用是将字符串中的 "rn" 全部替换到 "<br//>"这边有三个常常都没留意想过的难点正是措施内部对this举行了推断,借使那玩意儿等于空串的时候一贯回到 this只是js内部的拍卖相比麻烦,这里的this,其实早已不是二个简便的 "str" 了会见自个儿刚在谷歌(Google)的调整台里做写的一段代码就知道了那边的this,其实早已变为了多个好像new String 获得的靶子,至于这几个目的是怎么得到的,笔者就不说谎了(应该说那么些东西比较复杂,借使真张开了,又是另外一篇文了),反正要求掌握的是,这么些指标实际跟平日的平昔写的字面量是不一样样的,掌握javascript中 == 与 === 分化的应该知道

图片 1图表,实验结果然后,这样有怎么样难点呢?其实只要您拿它当字符串用,也没怎么大标题,当然有别于在于

"aa" === "aa" => truenew String === "aa" => false

可是只要您这么做

if{ //do}

do是不会被实行到的

if(new String{ //do }

这个do是被实行到的如下

图片 2new String

所以, 不要 直接回到this

最后说一下怎么化解这一个题目实际上本人本来想的是回到贰个类似 this.value 那样的事物,但是日常未有这么些性情恐怕类似的办法所以那么些主意就成为了

String.prototype.formatStringRN = function (){ var cd = this; if  { cd = cd.replaceAll('rn', '<br//>').replaceAll('n', '<br//>').replaceAll('r', '<br//>'); } return String;};

潜心再次来到值,用"String"管理了须臾间,这样获得的正是多少个平常性的字面量值了自然,其实也得以在一进来的时候一向管理 this变成那一个样子

String.prototype.formatStringRN = function (){ var cd = String; if  { cd = cd.replaceAll('rn', '<br//>').replaceAll('n', '<br//>').replaceAll('r', '<br//>'); } return ;};

聊起底说点题外话写js程序的时候

  1. 任凭什么状态,不要使用 new String 那样的代码(跟自家同样无聊测量检验性情的除此而外)
  2. 不论如何动静,判别是不是等于请使用 === 而毫不使用 ==

以上

本文由正版香港马报免费资料发布于2019精准正版资料,转载请注明出处:有关String.prototype

关键词: