Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript原型方法与内部方法_Javascript_Prototype_Function Prototypes - Fatal编程技术网

Javascript原型方法与内部方法

Javascript原型方法与内部方法,javascript,prototype,function-prototypes,Javascript,Prototype,Function Prototypes,使用prototype创建方法与仅在函数内部创建方法有什么区别?例如,下面的methodOne和methodTwo之间有什么区别 function myFunc() { this.methodOne = function () { console.log("First method.")}; } myFunc.prototype.methodTwo = function () { console.log("Second method.")}; 他们的行为方式似乎相同: var myFun

使用
prototype
创建方法与仅在函数内部创建方法有什么区别?例如,下面的
methodOne
methodTwo
之间有什么区别

function myFunc() {
  this.methodOne = function () { console.log("First method.")};
}

myFunc.prototype.methodTwo = function () { console.log("Second method.")};
他们的行为方式似乎相同:

var myFuncInstance = new myFunc();
myFuncInstance.methodOne();
myFuncInstance.methodTwo();

但我的感觉是,
methodTwo
,通过直接访问
原型
,正在做一些有点不同的事情

不同之处在于
myFunc
的每个实例都共享
methodTwo
的同一个实例,但都有自己的
methodOne
实例


再进一步说,如果您要创建1000个
myFunc
实例,那么您要创建1000个
methodOne
函数,它们都做相同的事情。仍然只有一个
methodTwo
函数。

使用.prototype语法,您可以向现有对象添加方法。例如,可以使用向数组类型添加求和方法

Array.prototype.sum=函数(){…}

然后用它作为

var a=[1,2,3],然后执行a.sum()


使用.prototype,您可以根据需要继续扩展,就像使用基于类的语言一样。

虽然您所说的是正确的,但它并不能真正回答问题。
var foo = new myFunc();
var bar = new myFunc();
foo.methodOne === bar.methodOne; // false
foo.methodTwo === bar.methodTwo; // true