javascript - js中关于this的指向的疑问?

查看:64
本文介绍了javascript - js中关于this的指向的疑问?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

今天开发需要一个简单的功能,就是把字符串的变量用值来替换。代码如下:

//替换变量为值
String.prototype.replaceVariables = function(){

var variables = this.getVariables();//获取变量数组
for (var i = 0; i < variables.length; i++) {
    var reg = new RegExp(variables[i],"g")
    this = this.replace(reg,i); //报错!!!this不能赋值
}

}

//返回变量数组
String.prototype.getVariables = function(){

var variableReg = new RegExp("[A-Z]+[0-9]+");
return  this.match(variableReg);

}

调用方法:
var _formula1 = 'IF(BG4=="",BG4,"")';//BG4是一个变量标识 需要替换
_formula1.replaceVariables();
错误提示:

这里this指向的应该是_formula1对象,replace替换后会返回新对象,再把新对象赋值给this,我觉得逻辑上应该没问题。
麻烦大家帮我看看我想的哪里出问题了。。。谢谢了。

解决方案

this就是只读的,而且对于字符串来说,你想改变一个字符串实例那是不可能的,变通的办法就是生成一个新的字符串实例,从String.prototype.replace方法你就可以看出,别人就是返回的一个新的字符串,而不是修改现有的字符串,为什么是这样,那就需要从字符串在内存的存储说起,可以google下

这篇关于javascript - js中关于this的指向的疑问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆