如何打印javascript String对象的属性和方法。
以下代码段不会打印任何内容。
for (x in String) {
document.write(x);
}
答案 0 :(得分:9)
String
的属性都是不可枚举的,这就是你的循环没有显示它们的原因。您可以使用Object.getOwnPropertyNames
函数在ES5环境中查看自己的属性:
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"...
答案 1 :(得分:2)
首先它必须声明为Object,(可能使用'new'关键字)
s1 = "2 + 2";
s2 = new String("2 + 2");
console.log(eval(s1));
console.log(eval(s2));
OR
console.log(eval(s2.valueOf()));
答案 2 :(得分:0)
尝试在Chrome中的开发者工具或Firefox中的Firebug中使用控制台。
并试试这个
for (x in new String()) {
console.log(x);
}
答案 3 :(得分: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"]