4

如何打印 javascript String 对象的属性和方法。

以下代码段不打印任何内容。

for (x in String) {
   document.write(x);   
}
4

4 回答 4

9

的属性String都是不可枚举的,这就是你的循环不显示它们的原因。可以在 ES5 环境中使用Object.getOwnPropertyNames函数查看自己的属性:

Object.getOwnPropertyNames(String);
// ["length", "name", "arguments", "caller", "prototype", "fromCharCode"]

您可以使用以下函数验证它们是不可枚举的Object.getOwnPropertyDescriptor

Object.getOwnPropertyDescriptor(String, "fromCharCode");
// Object {value: function, writable: true, enumerable: false, configurable: true}

如果您想查看String实例方法,则需要查看String.prototype. 请注意,这些属性也是不可枚举的:

Object.getOwnPropertyNames(String.prototype);
// ["length", "constructor", "valueOf", "toString", "charAt"...
于 2013-04-10T07:44:14.843 回答
2

首先它必须声明为对象,(可能使用'new'关键字)

s1 = "2 + 2";               
s2 = new String("2 + 2");   
console.log(eval(s1));      
console.log(eval(s2));      

或者

console.log(eval(s2.valueOf()));
于 2013-04-10T08:52:44.587 回答
0

尝试在 Chrome 中的开发人员工具中使用控制台或在 Firefox 中使用 Firebug。

试试这个

    for (x in new String()) {
       console.log(x);   
    }
于 2013-04-10T07:43:03.013 回答
0

这应该可以完成工作:

 var StringProp=Object.getOwnPropertyNames(String);

 document.write(StringProp); 

 -->>  ["length", "name", "arguments", "caller", "prototype", "fromCharCode"]

但您可能对以下内容更感兴趣:

 var StringProtProp=Object.getOwnPropertyNames(String.prototype);

 document.write(StringProtProp); 

-->> ["length", "constructor", "valueOf", "toString", "charAt", "charCodeAt", "concat", 
"indexOf", "lastIndexOf", "localeCompare", "match", "replace", "search", "slice", "split", 
"substring", "substr", "toLowerCase", "toLocaleLowerCase", "toUpperCase", "toLocaleUpperCase",
 "trim", "trimLeft", "trimRight", "link", "anchor", "fontcolor", "fontsize", "big", "blink", 
"bold", "fixed", "italics", "small", "strike", "sub", "sup"]
于 2013-04-10T07:45:19.493 回答