如何打印 javascript String 对象的属性和方法。
以下代码段不打印任何内容。
for (x in String) {
document.write(x);
}
如何打印 javascript String 对象的属性和方法。
以下代码段不打印任何内容。
for (x in String) {
document.write(x);
}
的属性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"...
首先它必须声明为对象,(可能使用'new'关键字)
s1 = "2 + 2";
s2 = new String("2 + 2");
console.log(eval(s1));
console.log(eval(s2));
或者
console.log(eval(s2.valueOf()));
尝试在 Chrome 中的开发人员工具中使用控制台或在 Firefox 中使用 Firebug。
试试这个
for (x in new String()) {
console.log(x);
}
这应该可以完成工作:
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"]