首页 > 试题广场 >

下面哪些语句可以在JS里判断一个对象是否为String类型

[不定项选择题]
下面哪些语句可以 在JS里判断一个对象是否为String类型?
  • oStringObject instanceof String
  • typeof oStringObject == 'string'
  • oStringObject is String
  • 以上答案都不正确
看到评论里一大堆 “字符串也是对象”,“在 JS 中,一切都是对象” 的言论,我真的是醉了!JS 没好好学,就不要在这里误人子弟好吗!
  • JS 中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;对象类型即 object。首先原始值类型它就不是对象
  • 另外,要注意 'hello' 和 new String('hello') 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:
typeof 'hello';  // 'string'
typeof new String('hello');  // 'object'
  • 之所以很多人分不清字符串字面值和 String 对象,归根结底就是 JS 的语法对你们太过纵容了。当执行 'hello'.length 时,发现可以意料之中的返回 5,你们就觉得 'hello' 就是 String 对象,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 'hello' 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,在其他面向对象语言里也有(如 C#)。不要认为 JS 帮你装箱了,你就可以在写代码的时候不分箱里箱外了!
编辑于 2018-01-03 15:38:00 回复(36)
求解,为啥B是错的?
发表于 2016-07-04 16:24:35 回复(6)
题目中说的是对象。(划重点) 不是变量
发表于 2021-12-23 17:10:31 回复(0)
var str = new String('haha')
str instanceof String  //true
str instanceof Object  //true

发表于 2018-09-02 21:58:43 回复(0)
1. oStringObject instanceof String  可以 
2. toString.call(oStringObject )=="[object String]"   可以

发表于 2017-09-12 12:23:22 回复(0)
狡猾  ,居然是对象,没看清
发表于 2017-04-09 20:25:24 回复(0)
var a=new String('dd');;
var b= a instanceof String;
console.log(b);
发表于 2015-03-30 22:46:40 回复(0)
题意中说的oStringObject是一个对象,所以typeof oStringObject是object,这是题目狡猾的地方。
发表于 2015-08-16 21:51:43 回复(25)
答:
//判断是否是String
function isString(str){
    return ((str instanceof String) || (typeof str).toLowerCase() == 'string');
}

//测试案例
var s1 = "abc",
    s2 = new String("abc");
console.log(isString(s1)+'\n');
console.log(isString(s2));
解析:
JS里面String的初始化有两种方式:直接赋值和String对象的实例化
var str = "abc";
var str = new String("abc");
通常来说判断一个对象的类型使用typeof,但是在new String的情况下的结果会是object
此时需要通过instanceof来判断
发表于 2014-11-12 13:05:29 回复(9)
1.操作符
(1)typeof操作符
格式:result=typeof variable
返回值:
undefined 值未定义
boolean 布尔值
string 字符串
number 数值
object 对象、null
function 函数
(2)instanceof操作符
格式:result=variable instanceof constructor
返回值:
true
false
2. 方法
String.prototype.isString=function(str){
return ((str instanceof String) || (typeof str).toLowerCase() == 'string');
}
3.原理
var str1=new String('str1');
var str2='str2';
console.log(typeof str1);//object
console.log(typeof str2);//string
console.log(str1 instanceof String);//true
console.log(str2 instanceof String);//false

发表于 2016-07-31 10:35:14 回复(1)
我反对最高票答案,不是因为它错,而是因为最高票答案并没有把问题讲清楚。
很多人以为这是一个字符串,是的,如果执行下面的代码,
var a="abc"; console.log(typeof a=="string"); 
会返回true。
为啥?因为这是一个字符串呀。
可是题目说的是字符串对象呢!那么字符串和字符串对象有啥区别呢?
其实呢,字符串对象是指基本包装类型,如果我执行下面的代码,
var b=new String("abc"); console.log(typeof b=="string"); 
结果是返回false。
虽然JS里一切皆为对象,字符串也是对象,但是新建的方式不同,也是有微小的差别的~

发表于 2017-06-21 12:45:16 回复(0)
常见的几种考法,大家可以了解一下
发表于 2019-03-29 11:01:48 回复(0)
一般判断一个对象的类型使用typeof,特殊在new String的情况下的结果会是object ,=new 出来的都是object
此时需要通过instanceof来判断
发表于 2015-08-03 22:56:07 回复(0)
答案有问题,不是问 可以判断 字符串对象 “是否” 为string吗。 我 typeof oString = 'string' 判断出false。没毛病吧。
发表于 2018-05-17 16:13:36 回复(7)

String 表示构造函数,'string' 表示变量的数据类型

如果问类型是否为String,那就表示让我们判断一下这个对象是否是new String产生的,注意!这里强调对象,也就是说在特指引用类型的数据,用xxx instanceof String就可以判断出来

如果问类型是否为string,那就是在问该变量是否为一个基本类型的字符串,用typeof xxx === 'string'来判断

前者是一个引用类型的变量,而后者是基本类型

编辑于 2021-11-17 10:36:06 回复(0)
var str1 = "haha"
var str2 = new String()
console.log(str1 instanceof String)
console.log(str2 instanceof String)

console.log(typeof str1);
console.log(typeof str2);
图片说明

var str1 = "haha"
var str2 = new String()
function isStr(str) {
	if (str instanceof String || (typeof str).toLowerCase() == "string" ){
		return true
	} else {
		return false
	}
}
console.log( isStr(str1));    //true
console.log( isStr(str2));    //true

编辑于 2017-03-26 12:33:08 回复(0)
Object.prototype.toString.call(obj)==[object String]
发表于 2016-09-01 07:37:24 回复(2)
多选????
发表于 2022-09-27 11:58:35 回复(0)
题目上写个多选题,我选一个还不行,非要让我再选一个,结果答案只有一个,耍我呢?
发表于 2022-03-05 16:17:27 回复(0)
判断一个类型 最直观的方法: Object.prototype.toString.call()

发表于 2019-04-22 12:28:07 回复(0)