你称之为原型函数的元素是什么?

时间:2016-02-12 10:20:31

标签: javascript jquery function

我在jQuery中创建了一个原型样式函数,例如:

// Check if $Example's width/height is completely in a container:
$('#Example').elementWithinBounderiesOf( $('#Container') );

在这些函数中,我可以使用this$(this)作为我们调用函数的对象,我理解并得到它,但是:

我们如何命名/致电/标签/推荐the element on which we called the function on

我需要这个用于文档目的:

// elementWithinBounderiesOf($container) - Check if [NAME NEEDED] fits within $container
// Input:  [NAME NEEDED] - the object we're gonna check if it fits in $container
//         $container - the container which should contain the [NAME NEEDED]
// Output: Boolean true/false wether or not the [NAME NEEDED] fits within $container

$.fn.elementWithinBounderiesOf = function ($container) {
   // $(this) is in this example $('#Example'), but could be any other object
   // How do we call this selected object *here, within the function*?
   // The name for object-on-which-we-activated-the-function (but that's quite a long name)
}

注1: 这是一个示例,我不需要特定于此案例的名称。
注2: 我不需要知道如何在函数中传递变量,或者引用,或者任何函数,我只需要正在寻找object on which the function is activated

的名称

3 个答案:

答案 0 :(得分:1)

this$(this)都引用了调用该方法的元素,因此在您的情况下$('#Example')this引用jQuery对象,$(this)引用jQuery包装器。

如果您想在原型中保留上下文,请查看以下问题:Preserving a reference to "this" in JavaScript prototype functions

  

为了保留上下文,bind方法非常有用,现在就是这样   最近发布的ECMAScript第5版规范的一部分,   这个函数的实现很简单(只有8行):

// The .bind method from Prototype.js 
if (!Function.prototype.bind) { // check if native implementation available
  Function.prototype.bind = function(){ 
    var fn = this, args = Array.prototype.slice.call(arguments),
        object = args.shift(); 
    return function(){ 
      return fn.apply(object, 
        args.concat(Array.prototype.slice.call(arguments))); 
    }; 
  };
}

MyClass.prototype.myfunc = function() {

  this.element.click((function() {
    // ...
  }).bind(this));
};

答案 1 :(得分:0)

我称之为 jQuery对象,或者 jQuery-wrapped元素非常清楚。这些是jQuery docs中使用的术语。

答案 2 :(得分:-1)

如此测试案例所示:



$.fn.example = function example () {
    alert(this === myobject);
};

var myobject = $("div");
myobject.example();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

this是调用该方法的jQuery对象。

由于$(some_jquery_object)创建了一个新的jQuery对象,其成员与作为参数传入的成员具有相同的成员,因此$(this)将是一个不同但相同的jQuery对象。