繁体   English   中英

单击使用string.prototype

[英]Using string.prototype with click

我正在尝试创建一个名为.Switch()的扩展方法,如下所示:

    String.prototype.Switch = function (p) {
        console.log(this); // should log $obj
    };

    var $obj = $("div");
    $("a", $obj).click(function (e) {
        $obj.Switch(0);
    });

的HTML

 <div>
   <a href="#">Link</a>
 </div>

我收到一个错误: Uncaught TypeError: undefined is not a function

有人可以告诉我这是怎么做的吗?

$obj是一个jQuery对象,而不是字符串。 如果要向其添加功能,则应采用以下方式:

jQuery.fn.Switch = function (p) {
     console.log(this); // should log $obj
};

您得到的错误是因为您通过向原型添加Switch函数来扩展String对象。 但是,您调用Switch on的函数是一个JQuery对象。 因此,如果我们修改您的示例:

String.prototype.Switch = function (p) {
    console.log(p); // should log input
};

var testStr = 'hello'; // create a new instance of String Object

testStr.Switch(5); // will log 5

因此,类似地,如果您在JQuery对象的原型上声明函数,则可以从JQuery Object的所有实例中调用该函数。

var $obj = $("div"); 是一个jQuery对象。 你可以做var $obj = $("div").text(); 它将使用字符串而不是对象来调用Switch

您需要执行$.prototype.Switch来记录该对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM