function func() {}
func.prototype.foo = "Var"
console.log(func.foo) // undefined
var foonew = new func()
console.log(foonew.foo) // Var
为什么func.foo无法查找原型属性?
function func() {}
func.__proto__.foo = "Var"
console.log(func.foo) // Var
var foonew = new func()
console.log(foonew.foo) // undefined
使用 proto 对原型的引用时,行为看起来是相反的。
答案 0 :(得分:0)
您将[[原型]]与prototype
混淆。
[[Prototype]],也称为__proto__
,是一个内部属性,用于确定当前对象应从哪个对象继承。
prototype
是构造函数的一个属性,它决定了新创建的实例的[[Prototype]]。
这在__proto__
VS. prototype
in JavaScript中有详细解释。
您可以通过将构造函数的[[Prototype]]设置为prototype
来实现这两种行为。您可以使用setPrototypeOf
(或__proto__
):
function func() {}
Object.setPrototypeOf(func, func.prototype);
func.prototype.foo = "Var";
func.foo; // "Var"
new func().foo; // "Var"
但是,我不推荐它。