javascript:如果原型(prototype)丢失,为什么 obj.constuctor.name 会给出 2 个不同的结果?

标签 javascript classname

如果原型(prototype)丢失,为什么 obj.constuctor.name 给出 2 个不同的结果?如果它有原型(prototype),我如何获取构造函数名称而不是“Object”?

// Class with prototype
function Foo(a) {
    this.a = a;
}
Foo.prototype = {
    bar: function () {
        console.log(this.a);
    }
};
f=new Foo(1)
f.constructor.name
"Object"

// Class with no prototype
function Fooee(a) {
    this.a = a;
}

f1=new Fooee(1)
f1.constructor.name
"Fooee"

最佳答案

您将通过将原型(prototype)重新定义为对象 {} 来更改 Foo() 的构造函数。

你应该这样做:

Foo.prototype.bar = function () {
   console.log(this.a);
}

关于javascript:如果原型(prototype)丢失,为什么 obj.constuctor.name 会给出 2 个不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577000/

相关文章:

javascript - 如何将数组转换为具有两个值的对象? javascript

javascript - 从库访问函数

javascript - 可以将数字或数字数组作为参数并返回字符串或字符串数​​组的函数

java - 指定在命令行参数中使用哪个 Java 接口(interface)实现

javascript - 为缩略图分配 .src 的问题

javascript - 有没有办法在 MutationObserver 机制触发(onVisibilityChanged)之前捕获元素状态?

javascript - VueJs : Focus on Input using v-el Directive inside v-repeat Directive

python - 如果我只知道 python 中的绑定(bind)方法,如何获取类名?

c++ - Qt QMetaData类名实现

javascript - 如何使用 JavaScript 测试和计算动态编号的类名