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 ? 展开
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 ? 展开
1个回答
展开全部
你好!
jQuery中通过extend()用来进行扩展,而又有jQuery.extend()和jQuery.fn.extend()两种用法。
jQuery.extend() 可以理解为jQuery类的扩展;
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实例。
希望对你有帮助!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询