jquery中$.fn.extend给对象添加对象方法问题

functiontest(){console.log('init');}$.fn.extend(test,{'okay':function(){console.log('... function test(){
console.log('init');
}
$.fn.extend(test,{
'okay':function(){
console.log('okay');
}
});
var obj=new test();
obj.okay();//为什么okay 方法找不到?
用$.fn.extend 给test函数添加对象方法不对吗?
$.fn.extend 不等价于 test.prototype ?
展开
 我来答
阿刚炖蛋
2017-01-29 · TA获得超过3004个赞
知道大有可为答主
回答量:1789
采纳率:92%
帮助的人:1000万
展开全部

你好!

jQuery中通过extend()用来进行扩展,而又有jQuery.extend()和jQuery.fn.extend()两种用法。

  1. jQuery.extend() 可以理解为jQuery类的扩展;

  2. jQuery.fn.extend() 可以理解为jQuery实例的扩展,类似$("div")这种叫做实例,jQuery插件多基于这种方式扩展;


修改了下你的代码,如下:

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="./jquery-1.11.1.min.js"></script>
    <script>
      function test(){
         console.log('init');
      };

      //给jQuery类扩展一个名为obj的对象,将test赋值给它
      $.extend({
         obj:test
      });

      //为$.obj也就是前面的对象继续进行扩展,相当于为它追加了一个okay方法
      $.extend($.obj,{
         'okay':function(){
            console.log('okay');
         }
      });
      $(function(){
         $("button:eq(0)").click(function(){
            $.obj();
         });
         $("button:eq(1)").click(function(){
            $.obj.okay();
         });
      });
    </script>
  </head>
  <body>
    <button>测试test()</button>
    <button>测试okay()</button>
  </body>
</html>

只是对你的代码稍微做了调整,extend的使用都是基于jQuery对象的,不管是jQuery类或是jQuery实例。


希望对你有帮助!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式