JavaScript 函数中的原型委托

JavaScript prototype delegation in function

我正在努力学习Javascript,但我发现这个原型概念非常令人困惑有人帮我解决这个代码片段

var func = function (){};
func.prototype = {m:9};

func.prototype.m; // That logs 9

func.m; // That logs undefined 

为什么委托在这种情况下不起作用?

通过执行 func.prototype = {m:9};,您将 func 变量的 'prototype' 属性 设置为 {m:9}.

当您调用 func.m 时,您尝试访问 func 变量的 'm' 属性,这你从来没有设置过。

相反,您之前设置了对象 func.prototype.

'm' 属性

如果您想从变量 func 设置 属性 'm',只需执行 func.m = 9;

您拥有的是一个构造函数,其原型中包含 m

var func = function (){};
func.prototype = {m:9};

console.log( func.prototype.m ); // That logs 9

原型被分配给不是函数本身而是分配给这个函数创建的实例:

var f = new func();

console.log( f.m ); // That also logs 9

这是您的 m 所在的位置。

为此还要记录 9

func.m

你必须在 Function.prototype 中包含 m 因为 func 的原型是 Function

Function.prototype.m = 9;

console.log( func.m ); // Logs 9