JavaScript中的object转换函数toString()与valueOf()介绍_javascript技巧

JavaScript中,object转换为boolean的操作非常简单:所有的object转换成boolean后均为true;即使是new Boolean(false)这样的object在转换为boolean后仍然为true。

复制代码 代码如下:

var x = new Boolean(false);
if(x){
  console.log("x is true");
}

在将object转换为string或者number时,JavaScript会调用object的两个转换函数:toString()与valueOf()。

toString()

toString()函数的作用是返回object的字符串表示,JavaScript中object默认的toString()方法返回字符串”[object Object]“。定义类时可以实现新的toString()方法,从而返回更加具有可读性的结果。JavaScript对于数组对象、函数对象、正则表达式对象以及Date日期对象均定义了更加具有可读性的toString()方法:

1.array的toString()方法将返回以逗号分隔的数组成员。比如,[1,2,3].toString()会返回字符串”1,2,3″。

2.function的toString()方法将返回函数的文本定义。比如,(function(x){return x*2;}).toString()会返回字符串”function(x){return x*2;}”。

3.RegExp的toString()方法与function的toString()方法类似,将返回正则表达式的文本定义。比如,/\d+/g.toString()会返回字符串”/\\d+/g”。

4.Date的toString()方法将返回一个具有可读性的日期时间字符串。

valueOf()

valueOf()函数的作用是返回object的数值表示,JavaScript中object默认的valueOf()方法会返回该object自身。与toString()一样,定义类时可以实现新的valueOf()方法,从而返回需要的结果。JavaScript对于Date对象定义了更加具有可读性的valueOf()方法:

1.Date的valueOf()方法将返回一个数值,该数值为Date对象与1970年1月1日零时的时间差(以毫秒为单位)。

时间: 2025-01-26 19:07:09

JavaScript中的object转换函数toString()与valueOf()介绍_javascript技巧的相关文章

JavaScript中使用arguments获得函数传参个数实例_javascript技巧

JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错. 实参比形参多不会报错 function say(a){    alert(a); }   say('琼台博客','WEB技术博客'); 执行结果 我们再来看看形参比实参多的结果 function say(a,b){    alert('a 的值是 '+a+'\nb 的值是 '+b); }   say('琼台博客'); 执行结果 a 对应第一个实参"琼台博客",b

JavaScript中数组对象的那些自带方法介绍_javascript技巧

/** * 本文纯粹是梳理一下目前W3C标准中Array对象的自带Method. * 全文没啥营养,不过最后性能测试的部分,倒是抛出了一些疑问. */ 赋值方法 (Mutator methods) 这些方法直接修改数组自身 pop 和 push Array.pop(); // 删除数组最后一个元素,返回被删除的元素 Array.push(element1, ..., elementN); // 在数组尾部插入1-N个元素,返回操作后数组的length 通过这 pop 和 push ,就能把数组模

JavaScript中检查对象property的存在性方法介绍_javascript技巧

在JavaScript中,可以用四种方法来检查某个对象o是否拥有property x: 1."x" in o.in操作符可用于检查对象o中是否有x这个property.x可以是对象自身的(Own Property),也可以是从原型对象中继承而来的:x可以是enumerable的property,也可以是非enumerable的property. 2.o.x.可以通过访问o.x语句,判断其结果是否为undefined来确认x是否存在,其作用范围与in操作符相同.与in操作符不同的是:如果

JavaScript 字符串与数组转换函数[不用split与join]_javascript技巧

两个自定义的实现字符串与数组相互转换的js函数,希望能对大家有用: 复制代码 代码如下: function StringToArray(str,substr) { /* 函数功能:字符串按照指定字符串分割转换为数组 参数: str :需转换的字符串 substr:分割字符串 返回值: 转换后的数组 */ var arrTmp = new Array(); if(substr=="") { arrTmp.push(str); return arrTmp; } var i=0, j=0,

Javascript中的方法链(Method Chaining)介绍_javascript技巧

在寻找如何设计一个Javascript API的时候,发现了Method Chaining这个东西,方法链,看上去似乎很强大,也挺有意思的,而这个东西也是过去我们经常看到的.. Javascript Method Chaining 在维基百科上有这样的解释: 复制代码 代码如下: Method chaining, also known as named parameter idiom, is a common syntax for invoking multiple method calls i

JavaScript中的apply()方法和call()方法使用介绍_javascript技巧

1.每个函数都包含两个非继承而来的方法:apply()和call(). 2.他们的用途相同,都是在特定的作用域中调用函数. 3.接收参数方面不同,apply()接收两个参数,一个是函数运行的作用域(this),另一个是参数数组.call()方法第一个参数与apply()方法相同,但传递给函数的参数必须列举出来. 例1: 复制代码 代码如下: window.firstName = "diz"; window.lastName = "song"; var myObjec

javascript中的变量作用域以及变量提升详细介绍_javascript技巧

变量作用域"一个变量的作用域表示这个变量存在的上下文.它指定了你可以访问哪些变量以及你是否有权限访问某个变量." 变量作用域分为局部作用域和全局作用域. 局部变量(处于函数级别的作用域)不像其他对面对象的编程语言(比方说C++,Java等等),javascript没有块级作用域(被花括号包围的):当是,javascript有拥有函数级别的作用域,也就是说,在一个函数内定义的变量只能在函数内部访问或者这个函数内部的函数访问(闭包除外,这个我们过几天再写个专题). 函数级别作用域的一个例子

JavaScript中的noscript元素属性位置及作用介绍_javascript技巧

一.<script>元素属性 向XHTML页面中插入JavaScript的主要方法,就是使用<script>元素,该元素有5个属性分别为charset.defer.language.src.type,经常使用的是type.src.defer这三个. 1.type属性的值一般都是text/javascript,该属性是必须的,<script type="text/javascript"/>. 2.src属性的值是*.js外部文件,该属性是可选的,<

javascript中关于break,continue的特殊用法与介绍_javascript技巧

今天在研究某系统时发现其代码有这样一个结构(已简化): 复制代码 代码如下: var result = false; point: { var obj = { key: 1 }; for (var key in obj) { // ... break point; } result = true; } alert(result); 咋看一下以为是代码错误,甚至于Visual Studio对此代码没办法进行正确的格式化.可是又仔细一看语意还是很清晰的,也就是从for循环内部break到指定的poi