gpt4 book ai didi

javascript - 您调用原型(prototype)函数的元素是什么?

转载 作者:行者123 更新时间:2023-12-01 05:33:38 25 4
gpt4 key购买 nike

我在 jQuery 中制作了一个原型(prototype)样式的函数,例如:

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

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

我们如何命名/调用/标签/引用我们在其上调用函数的元素

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

// 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:我不需要知道如何在函数中传递变量、引用或任何功能,我只是在寻找激活该功能的对象的名称

最佳答案

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

如果你想在原型(prototype)中保留上下文,请看这个问题:Preserving a reference to "this" in JavaScript prototype functions

For preserving the context, the bind method is really useful, it's now part of the recently released ECMAScript 5th Edition Specification, the implementation of this function is simple (only 8 lines long):

// 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));
};

关于javascript - 您调用原型(prototype)函数的元素是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35360057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com