代码片段如下,任何人都可以解释为什么a.hasOwnProperty("prototype")
是真的,其他的都是假的?这是否意味着函数有自己的原型,其他是继承自Object?如果是,为什么c.hasOwnProperty("prototype")
是假的?此外,他们constructor
财产的财产来自哪里?感谢
var a = function () {
};
var b = new String("test");
var c = {};
console.log(a.hasOwnProperty("prototype"));//true
console.log(b.hasOwnProperty("prototype"));//false
console.log(c.hasOwnProperty("prototype"));//false
console.log(a.hasOwnProperty("constructor"));//false
console.log(b.hasOwnProperty("constructor"));//false
console.log(c.hasOwnProperty("constructor"));//false
console.log(a.constructor);//Function()
console.log(b.constructor);//String()
console.log(c.constructor);//Object()
答案 0 :(得分:3)
prototype属性仅在构造函数上可用。 'a'是一个函数,因此有一个原型。 'b'和'c'是实例。他们没有原型,他们的构造者有原型:
console.log(a.constructor.hasOwnProperty("prototype")) // true
console.log(b.constructor.hasOwnProperty("prototype")) // true
console.log(c.constructor.hasOwnProperty("prototype")) // true