在原型函数中这与对象文字函数

时间:2015-07-29 13:42:54

标签: javascript jquery

我对编码javascript插件非常陌生,我在过去半年左右的时间内构建了自己的2个插件,基本上是我个人使用的插件插件。现在我通常在IFFE中使用以下模式。

$.Mypluginname = function() {
    this.anotherfunction(); // works !! 
}

$.mypluginname.prototype.anotherfunction(){
     // this points to $.Mypluginname awesome!!!
}

$.mypluginname.prototype.anotherfunction(){
    // this points to $.Mypluginname awesome!!!
}

但是最近我发现了一个更好的JS插件模式,看起来是这样,

$.Mypluginname = function() {

}

$.mypluginname.prototype = {

   anotherfunction : function(){
     // this points to $.Mypluginname awesome!!!  ... but how ? 
   }

   mypluginname : anotherfunction(){
    // this points to $.Mypluginname awesome!!!  ... but how ? 
   }

}

了解this如何仍然指向主要功能,我的问题是如何?

这是如何在下面的功能:

$.Mypluginname = function() {
          this.anotherfunction(); // works !! ... can you answer this quinten.
    }

任何人都可以解释一下吗?

编辑 ::此thread共有12个答案。没有一个回答我的问题,这首先不是“原型如何工作”。阅读该线程肯定会增强我对JS原型的了解,但我不知道如何解释this如何在以下设计模式中起作用。

$.mypluginname.prototype = {

       anotherfunction : function(){
         // this points to $.Mypluginname awesome!!!  ... but how ? 
       }

       mypluginname : anotherfunction(){
        // this points to $.Mypluginname awesome!!!  ... but how ? 
       }

    } 

谢谢。

亚历-Z。

3 个答案:

答案 0 :(得分:1)

看起来就像你在问如何

$.mypluginname.prototype.anotherfunction = function() {
 // this points to $.Mypluginname awesome!!!
}

的作用相同
$.mypluginname.prototype = {
   anotherfunction : function(){
     // this points to $.Mypluginname awesome!!!  ... but how ? 
   }
}

答案是它们在功能上是相同的; (一个正在替换一个键,一个正在替换整个原型,但是在这两种情况下你在原型上设置anotherFunction

答案 1 :(得分:0)

<head> <style> @media only screen and (max-width: 771px) { /*add your class and code here*/ } </style> </head> 的值取决于您调用函数的方式,而不是您定义函数的方式和位置。你在问题中所有代码的不同变化都是关于函数的定义,而不是函数的调用,所以它们没有任何区别。

答案 2 :(得分:0)

这始终是对其Object的引用。你正在创建的是一个构造函数。 Javascript是一种使用原型(原型继承)继承的语言。所以一旦你使用new运算符调用构造函数,就像这样:

var someObj = new myConstrFunction(param);

它会返回一个包含变量和函数的Object。

console.log(someObj)
//basicly returns something like this (simplyfied) 
//{anotherFunction:function(){},someVal:"",someOtherval:true};

这些函数和变量可以通过使用&#34; this&#34;来引用它们的对象。 在大多数情况下