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