JavaScript原型委托功能

时间:2018-01-12 08:29:48

标签: 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 

为什么代表团不在这种情况下工作?

2 个答案:

答案 0 :(得分:4)

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

当您致电func.m时,您尝试访问之前从未设置的func变量的'm'属性。

相反,您之前设置了对象func.prototype'm'属性。

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

答案 1 :(得分:3)

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

您必须m Function.prototype,因为func的原型是Function

Function.prototype.m = 9;

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