Sho*_*vik 6 javascript prototype
举个例子
var Func = function(){}
Run Code Online (Sandbox Code Playgroud)
这里Func有一个名为prototype的属性,我可以添加我的自定义方法,如下所示.
Func.prototype.move = function(){ //do something }
Run Code Online (Sandbox Code Playgroud)
根据我的理解,原型只是Func的另一个属性,默认情况下由解释器提供,不用于委托任何功能,即.没有什么比这更像了
Func.move()
Run Code Online (Sandbox Code Playgroud)
应用相同的逻辑我正在创建具有相同功能的另一个属性,如下所示
Func.method = function(){ //do something }
Run Code Online (Sandbox Code Playgroud)
现在如果创建一个新对象
var obj = new Func();
Run Code Online (Sandbox Code Playgroud)
这里有obj.move()但obj.method()不会在那里.如果原型只是另一个没有神奇优势的属性那么为什么这种行为?提前致谢 !
当您使用new该prototype函数的属性时,将用作[[Prototype]]实例对象的内部属性的模板.这在某些浏览器中暴露出来__proto__,不要再与之混淆prototype,它只是一个常规属性.
当您将属性直接附加到函数时,而不是prototype,您基本上将该函数用作命名空间.由于函数是对象,他们可以有任意属性,和其它的是内置的,如prototype和name例如.实际上,您正在创建类似于静态方法的东西,一种不依赖于实例但不使用的方法this.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |