我正在尝试学习Javascript,但我发现这个原型概念非常令人困惑有人帮助我使用这段代码
var func = function (){};
func.prototype = {m:9};
func.prototype.m; // That logs 9
func.m; // That logs undefined
为什么代表团不在这种情况下工作?
答案 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