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
我正在努力学习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
.
如果您想从变量 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