gpt4 book ai didi

javascript - 带参数的原型(prototype)

转载 作者:行者123 更新时间:2023-12-03 12:40:26 25 4
gpt4 key购买 nike

深入研究 JS 原型(prototype)我试图通过管道将参数传递给已经存在的函数。这就是结果。

chardinJs.prototype.start = function (txtTag) {
this.infoTag = txtTag;
var el, _i, _len, _ref;

if (this._overlay_visible()) {
return false;
}
this._add_overlay_layer();
_ref = this.$el.find('*[' + infoTag + ']:visible');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
el = _ref[_i];
this._show_element(el);
}
return this.$el.trigger('chardinJs:start');
};

最初没有“txtTag”作为参数,并且该函数工作正常,但是一旦添加它,我收到错误“$(...).chardinJs.start 不是函数”。给出了什么?

PS:我正在尝试使用这样的功能:

$('form').chardinJs.start('data-info');

在修改之前,我使用的函数如下:

$('form').chardinJs('start');

最佳答案

您将 start 添加为原型(prototype)上的函数,但您尝试从构造函数而不是实例访问它。要通过原型(prototype)调用它,您必须使用 new 关键字来创建实例:

(new ($('form').chardinJs())).start('data-info');

我不确定这是否有效。要按照您想要的方式调用它,您必须将 start 设为 chardinJs 的属性:

chardinJs.start = function (txtTag) {
...

但是,这也行不通,因为你会失去上下文。

实际上,要完成您想要做的事情,您必须在调用 chardinJs 时将这些函数添加到 jQuery 对象:

$.fn.chardinJs = function () {
// your existing implementation
this.start = chardinJsStart; // reference your start function
return this;
};

那么你可以这样做:

$('form').chardinJs().start('data-info');

另一种选择是保持它已经工作的方式,但在方法名称后面传递方法参数:

$('form').chardinJs('start', 'data-info');

关于javascript - 带参数的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552417/

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