javascript-关于javaScript中toString的问题

问题描述

关于javaScript中toString的问题
 var a = {};
var _ff = a.toString;
var arr = [1,2,3,4];
_ff.call(arr);         //"[object Array]"
toString(arr);         //"[object Object]"
_ff(arr);              //"[object global]"
arr.toString();        //"1,2,3,4"

同样的toString方法的调用

我想知道得出各种结果的原因

求大神帮忙解答

解决方案

_ff.call(arr); 表示输出当前对象的字符串表示。Ecmascript5中定义的数组的标准写法就是"[object Array]",toString(arr)那个其实调用的是window.toString();而arr是没有任何意义的,把arr换成任何对象比如toString(0)、toString({})都是一样的输出,而且不同的浏览器显示的不一样,chrome下显示的是"[object Window]",_ff(arr)其实调用的是toString()这个函数本身,你可以直接输出_ff 看一下,会发现_ff输出的是一个函数,函数加上括号调用,就是调用该函数,因此返回"[object global]",这个结果也是跟浏览器相关的,chrome下显示的是"[object Undefined]",arr.toString()这个也是Ecmascript5的标准用法,数组的toString()默认就是用逗号分隔的。

解决方案二:


```(1)
_ff.call(arr);   //"[object Array]"
// 注意 a 其实是一个空对象(不是数组),所以它的 toString() 其实就是默认object的toString()
// 但是又用了 arr 作为调用的主体对象,所以有类型 Array。比如:
_ff.call(new Date()); //"[object Date]"
_ff.call("abc"); //"[object String]"
// 假如你把 a 定义为数组,那么就是数组的输出了
var a = {};
...
_ff.call(arr);   //"1,2,3,4"
先说(3)
_ff(arr);        //"[object global]"
// 因为 toString() 是不需要参数的,这个arr参数直接被忽略。等于直接调用:
a.toString();
(2)
toString(arr);   //"[object Object]"
// 调用当前对象的 toString(),同样忽略arr。
// 很明显不是用默认的方法,自己实现过的。
(4)
arr.toString();  //"1,2,3,4"
// Array.toString(),没什么要多说的了
时间: 2024-09-13 10:37:09

javascript-关于javaScript中toString的问题的相关文章

JavaScript中toString()方法的使用详解

  这篇文章主要介绍了JavaScript中toString()方法的使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 JavaScript Boolean.toSource()方法返回表示对象的源代码的字符串. 注意:此方法不会在Internet Explorer中运行. 语法 ? 1 boolean.toSource() 下面是参数的详细信息: NA 返回值 返回表示对象的源代码的字符串. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

Javascript技术栈中的四种依赖注入小结_基础知识

作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri

使用JavaScript和C#中获得referer_javascript技巧

1. JavaScript 复制代码 代码如下: /**  * 获取HTTP请求的Referer  * @ishost 布尔类型 Referer为空时是否返回Host(网站首页地址)  */ function get_http_referer(ishost) {     if (ishost === undefined) { ishost = true; }     if (document.referrer) {         return document.referrer;     }

Javascript技术栈中的四种依赖注入详解_javascript技巧

作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri

Javascript 获取Repeater中hidden Field 的值

问题描述 如何才能使用Javascript获取Repeater中hiddenField的值?首先点选Checkbox,然后获取相应的行的值,如hiddenfield控件绑定的id.Repeater如下:<asp:RepeaterID="rptList"runat="server"><HeaderTemplate><tablewidth="100%"border="0"cellspacing=&qu

分享JavaScript与Java中MD5使用两个例子_javascript技巧

在网上查了一下,在网上收集了Java与JavaScript中使用的两个例子,试验过,分享下.1.Java: package org.bearfly.test.md5; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Utils { public static

javascript将url中的参数加密解密代码_javascript技巧

今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码: 复制代码 代码如下: <SCRIPT LANGUAGE="JavaScript">    <!-- Begin    function Encrypt(str, pwd) {        if(str=="")return "";        str = escape(str);        if(!pwd

JavaScript在网页中的简单应用

核心提示:JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库.对于已经具备C++或C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉快的事. JavaScript基本数据结构 JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库.对于已经具备C++或C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉快的事. 一.JavaSc

JavaScript检测字符串中是否含有html标签实现方法

  这篇文章主要介绍了JavaScript检测字符串中是否含有html标签实现方法,本文直接给出实现代码,需要的朋友可以参考下 功能代码 代码如下: /** * 字符串是否含有html标签的检测 * @param htmlStr */ function checkHtml(htmlStr) { var reg = /<[^>]+>/g; return reg.test(htmlStr); } demo script: 复 代码如下: /** * 字符串是否含有html标签的检测 * @p