草庐IT

tostring

全部标签

javascript - Javascript 的 Function.toString() 的逆运算

对于Javascript应用程序,我需要能够让用户保存对象的状态。这涉及保存一组以前动态创建或通过GUI创建的自定义函数,并在以后加载这些存储的函数。本质上,我需要序列化和反序列化函数。现在我通过使用Function对象的.toString()方法实现序列化部分:func.toString().replace('"','\"').replace(/(\r)/g,'').replace(/(\n)/g,'').replace(/(\t)/g,'')这给了我这样美丽的“序列化”函数(注意该函数未命名):"function(someParameter){this.someFunctionNa

Javascript 数组 valueOf 方法

[].valueOf()方法返回数组本身。根据这个document.write([["a"]],["b"])应该返回['a']b不是吗?但这并没有发生,它只是写了ab。我只是想知道这背后的原因。对于字符串元素.toString()方法返回这个,["a","b"].toString()//a,b但是对于带有数组的元素,它应该返回[["a"],"b"].toString()//[a],b 最佳答案 当您将对象传递给document.write时,Javascript会使用.toString()将对象转换为字符串。在这种情况下,Array

javascript - 自动javascript类型强制

这更像是对javascript工作原理的思考,而不是要解决的实际问题。在像这样的语句的情况下varstr=9+"somewordshere";结果strvar将包含值“9somewordshere”。我的问题是javascript使用什么函数自动将Number对象“9”强制转换为要与String对象“somewordshere”连接的字符串,并且此函数是否可更改/可覆盖。这开始于我需要在页面上输出前面带有0的单个数字。这很容易通过Number对象上的快速原型(prototype)函数完成Number.prototype.SpecialFormat=function(){if(this并

javascript - 在javascript中添加一个对象和一个数组的结果是什么?

我在地址栏中试过这段代码:javascript:alert({}+[])结果是:[对象对象]。javascript:alert(typeof({}+[]))结果是:字符串。谁能给我解释一下这是怎么回事? 最佳答案 连接运算符(+)将两个字符串值连接在一起。如果你给它的东西不是字符串值,那么它会首先调用它们的.toString()方法。回应下面的评论,“是的!”Object.prototype.toString=function(){return"a";};Array.prototype.toString=function(){ret

javascript - 获取任何 JavaScript 值或对象的字符串表示的安全方法

我想在JavaScript中获取任何对象或值的字符串表示形式。我做了几个实验。>vara=document.createTextNode('foo');a"foo">vara=document.createTextNode('foo');a.toString()"[objectText]">vara=1;a.toString()"1">(1).toString()"1">1.toString()SyntaxError:UnexpectedtokenILLEGAL我有以下问题:为什么1.toString()会失败?以下函数是否会返回每个可能的JavaScript对象、值或文字的字符串表示

javascript - 为什么 .toString 范围限制为 36?

也许这是一个蹩脚的问题,如果是这样,我真诚地道歉。对我来说,我遇到了一个有趣的挑战。ClickMefunctionmyFunc(){varn=15vara=n.toString();//outputs15varb=n.toString(2);//outputs1111varc=n.toString(9);//outputs16vard=n.toString(18);//outputsfvare=n.toString(36);//outputsfvartotal=a+""+b+""+c+""+d+""+e;document.getElementById('test').innerHTML

javascript - 为什么 Chrome 在 (.1).toString(3) 的点后生成 1099 位数字?

我觉得这只是一个无害的错误,但我仍然想了解发生了什么。我正在玩一些代码来渲染Peanocurve在涉及以3为基数表示逻辑坐标的Canvas上,当我注意到一个函数在Chrome中返回荒谬的长字符串时。仔细观察,结果是表达式(.1).toString(3)在Chrome中评估0.00220022002200220022002200220022010000210021000011010100020220112020121211021220201121200010202102221012011200102210101012020202002210201010020021011001000020

javascript - foo.toString() 和 Object.prototype.toString.call(foo) 有什么区别?

如果我定义一个函数:functionfoo(){alert(this.x);}我可以通过调用foo函数的toString方法来打印函数定义。console.log(foo.toString())输出:functionfoo(){alert(this.x);}如果我然后运行console.log(Object.prototype.toString.call(foo))输出:"[objectFunction]"令我惊讶的是输出结果不同。我认为这两种形式是等价的吗?即foo函数从顶级Object继承了toString方法并使用Object.prototype.toString.call(fo

javascript - 为什么 toString() 和 this.toString() 在 Chrome 的控制台中产生不同的结果?

现在这根本没有任何实际意义,但我对我偶然发现的这个小怪癖很好奇。基本上,在Chrome的开发者控制台中,这toString()返回[objectObject],而这个this.toString()返回[objectDOMWindow]。据我所知,这只发生在控制台,可以看出onthisjsFiddle.有人在##javascript上找到了thislink解释函数的来源。但是,它没有解释在控制台内部或外部使用时行为中存在的差异。那么为什么toString()和this.toString()在Chrome的控制台中产生不同的结果? 最佳答案

javascript - 分配给 {}.toString 是什么意思?

我正在学习JavaScript,我看到了这个演示类型检测的片段:vartoClass={}.toString//CopyareferencetotoStringforobjectsintotoClassvariablealert(toClass.call([1,2]))//[objectArray]alert(toClass.call(newDate))//[objectDate]我不明白第一行的空大括号是干什么用的,所以我这样删除它们:vartoClass=toString代码仍然有效。但是在下面的代码中,functiongetAge(){alert(this.age);}varp1