函数中的JavaScript原型委托

函数中的JavaScript原型委托,javascript,function,object,prototypal-inheritance,delegation,Javascript,Function,Object,Prototypal Inheritance,Delegation,我正在尝试学习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时,尝

我正在尝试学习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

通过执行
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

您拥有的是一个构造函数,它的原型中有
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

这段代码是如何“记录”任何东西的?这里回答:只有当您使用
new func
实例化一个新对象时,原型才会变得相关。这段代码是如何“记录”任何东西的?这里回答:只有当您使用
new func
实例化一个新对象时,原型才会变得相关。