javascript 对象原型(prototype)属性访问

标签 javascript prototype

这是我的问题的 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/

相关文章:

javascript - 当 "change"被触发时检索 ckeditor 文本更改的某种方法

javascript - 跟踪哪个列表元素被点击并将此数据传输到 PHP

javascript - 通过 Id 使用 Jquery Datatable 插件删除行

javascript - 为什么 console.log 显示错误属性?

javascript - 为什么在新 Node 版本中使用字母数字键创建对象如此缓慢?

javascript - 在 jQuery 中显示选中的复选框的数量

java - 我们在 Spring 中使用 Prototype 范围的实际业务场景?

javascript - 陷入无限的 constructor.prototype.constructor.prototype 链

javascript - JS中数字原型(prototype)的自定义迭代器

javascript - 向原型(prototype)添加函数与对象字面量(使用 this)