0 0

javascript问题: Object == String 吗?5

我是一个ruby程序员。最近看到node.js挺火的,也就试试了。
因为没怎么写过javascript,写起来挺不顺手的。
所以就想把ruby里一些好用的函数(如:empty)拿到javascript里来用。
我的代码是这样写的。



String.prototype.empty = function(){
    console.log(typeof(this));
    return this=='' ? true : false;
}


console.log('hello'.empty());
console.log('——————');
console.log(''.empty());


结果:

object
false
——————
object
true



结果看来说应该 是对了吧!但为什么typeof(this)是object呢?

String.prototype.empty = function(){
    console.log(this);
    console.log(typeof(this));
    return this=='' ? true : false;
}


console.log('hello'.empty());
console.log('——————');
console.log(''.empty());


结果:
{ '0': 'h', '1': 'e', '2': 'l', '3': 'l', '4': 'o' }
object
false
——————
{}
object
true


从上面的结果来看,为什么 typeof(this) 是 object 的原因是明白了。
但问题又出现了:

为什么 this=='' 判断式没有出问题,而且每次还能得出正确的结果呢?
难到说 object 和 string 类型是等价的?

请哪位大侠给指点迷津啊!





2012年2月27日 14:08

1个答案 按时间排序 按投票排序

0 0

采纳的答案

1.this是对象,这个没啥疑问;
2.this == '',原因是 符号 == ,它会对左右两边的值,自动进行类型转换,来得出结果。具体的可以搜索一下 【javascript 类型 自动转换 == 】
3.你可以试一下 === ,这个符号不会进行类型转换。

2012年2月28日 14:18

相关推荐

    javascript typeof id===’string’?document.getElementById(id):id解释 原创

    对于数字、函数、null、undefined、boolean、object(注意,这里的object并不区分数组或对象实例)和其他类型,它也会返回相应的字符串类型标识。 在这段代码中: ```javascript typeof id === 'string' ? document...

    javascript typeof id==='string'?document.getElementById(id):id解释 <font color=red>原创</font>

    `typeof`操作符通常用于验证变量的数据类型,它能够区分基本数据类型(如string、number、boolean等)和引用类型(如object,其中可以包括array、function等)。在实际开发中,使用`typeof`来确认变量类型是一个非常...

    javascript object to json string

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在JavaScript中,我们可以使用`JSON.stringify()`方法将JavaScript对象...

    flex中使用json

    在Flex开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其轻量级、易读、易写的特点,被广泛应用于Web服务与客户端之间的数据传输。本篇将详细介绍在Flex中如何使用JSON,包括JSON的基本...

    justo-assert-cli:子进程的断言库

    spawn(file : string, args : string[], opts : object = {}) : object spawn(dir : string, file : string, opts : object = {}) : object spawn(dir : string, file : string, args : string[], o

    schema-typed:数据建模和验证的架构

    模式类型数据建模和验证的架构目录static combine(...models) check(data: object) checkAsync(data: object) checkForField(fieldName: string, data: object) checkForFieldAsync(fieldName: string, data: object...

    javascript string tutorial

    JavaScript支持两种不同类型的字符串:**String Literal(字符串字面量)** 和 **String Object(字符串对象)**。尽管它们在某些场景下表现相似,但在内部实现和行为上存在显著差异。 ##### String Literal 字符...

    typeScript实用知识库分享

    * 对象类型(Object):使用object定义的变量,例如let obj: object = { name: 'John', age: 30 }; 数组和元组类型 * 数组类型(Array):使用数组定义的变量,例如let arr: number[] = [1, 2, 3]; * 元组类型...

    json类 AS3.0可用

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在ActionScript 3.0中,JSON类是用于处理JSON数据的关键工具,它使得AS...

    Flex使用JSON格式与Java通信.docx

    在本文档中,我们将深入探讨如何利用Flex框架通过JSON(JavaScript Object Notation)格式与Java后端进行数据交换。这种方法不仅能够简化数据传输过程,还能提高应用程序的整体性能。 #### 二、基础知识概述 1. **...

    netlify-cms-oauth-provider-node:netlify-cms的无状态外部OAuth提供程序,内置对Vercel无服务器功能的支持

    现在,最好检查一下示例:概述该库导出处理程序创建函数: createBeginHandler(config: object, options: CreateConfigOptions): function(state: string=): Promise&lt;string&gt; createCompleteHandler(config: object,...

    在Flex中使用Json (1)

    标题中的“在Flex中使用Json (1)”表明我们将探讨如何在Adobe Flex开发环境中利用JSON(JavaScript Object Notation)这一轻量级的数据交换格式。Flex是一个开源的、基于ActionScript的框架,用于创建富互联网应用...

    JavaScript中的object转换成number或string规则介绍

    在JavaScript程序编写过程中,根据不同的上下文,JS会自动将object转换成number或者string后再处理。这种自动转换的规则如下: object自动转换成string的规则: 1.如果object所属类覆写了toString()方法,则调用该...

    AS3 JSON 包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁明了的文本形式,被广泛应用于Web服务和应用程序之间传输数据。在ActionScript 3(AS3)中,JSON同样扮演着重要的角色,使得AS3可以方便...

    Flex解析JSON

    在Flex开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛用于与服务器进行数据交互。本文将详细介绍Flex解析JSON的两种主要方法:使用`JSON.parse()`和`mx.utils.JSONUtil`,以及在...

    JavaScript中三个等号和两个等号的区别(== 和 ===)浅析

    对于JavaScript核心内置对象,如Number或String,通常会先尝试valueOf方法转换,如果不存在valueOf方法或valueOf方法返回的不是原始类型,则会尝试toString方法转换。一个例外是Date对象,Date对象在转换时总是使用...

    Google V8学习手记,月javascript写服务器端是多少人的梦醒呀,Google v8让javascript和php一样

    args.GetIsolate()-&gt;ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(args.GetIsolate(), "Called from JavaScript"))); } // 将 C++ 函数暴露给 JavaScript v8::Local&lt;v8::FunctionTemplate&gt; tpl =...

    十二个非常有用的Flex函数Source In Flex

    **函数**: `public function LTrim(s: String): String` 此函数用于去除字符串左侧的所有空白字符,包括空格、换行符、回车符和制表符。 **示例代码**: ```actionscript public function LTrim(s: String): ...

    html-tableify:将json转换为HTML表

    data:Array(Object)=&gt;表的数据 config:Object =&gt;配置 config.tidy:Boolean =&gt;是否整理输出HTML config.headers:Array(Object)=&gt;标头配置 header.name:String =&gt;键入数据对象 header.align:Enum('left'|'...

Global site tag (gtag.js) - Google Analytics