这是我的问题的 jsFiddle:http://jsfiddle.net/4wyvv/1/
基本上:
//constructor function
function Maker(){
var str;
this.init = function(str){
this.str = str;
};
this.msg = function(){
return this.str;
};
}
//object from Maker
var obj = new Maker();
obj.init("Hi my name is Dan");
//make sure everything exists and has worked as expected
Audit.Log(obj.msg());
//look in Maker.prototype for the constructor property
Audit.Log(obj.constructor);
//look in Maker.prototype for the constructor property
Audit.Log(Maker.prototype.constructor);
//now look for all makers prototype properties, this should list atleast "constructor"
for(var i in Maker.prototype){
Audit.Log(i);
}
为什么 foreach 循环没有输出任何内容?它至少应该输出构造函数,正如我所展示的 Maker.prototype.constructor 存在一样。
最佳答案
对象的一些属性(例如“构造函数”)是隐藏的,或者更准确地说是不可枚举的,因此它们不会使用像这样的 for in 循环进行枚举,在 ECMA5 中,我们有一个可以获取所有属性的方法
Object.getOwnPropertyNames(Maker.prototype)
这是给你的
["constructor"]
详细解释如下:How to display all methods of an object in Javascript?
关于javascript 对象原型(prototype)属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446496/