大体上如下:
大体上如下:
var editor = function(){
var ajaxRequestUrl = ""; function Fields(id, title) {
this.fields = [];
}
Fields.prototype = {
save : function() { },
redirect : function(result) {},
}
return {
init : function() { this.allowFields = new allowEditFields();}
}
}();//调用$(document).ready(function(){
editor.init();
});两个问题:红色部分怎么理解?
大体上如下:
var editor = function(){
var ajaxRequestUrl = ""; function Fields(id, title) {
this.fields = [];
}
Fields.prototype = {
save : function() { },
redirect : function(result) {},
}
return {
init : function() { this.allowFields = new allowEditFields();}
}
}();//调用$(document).ready(function(){
editor.init();
});两个问题:红色部分怎么理解?
//指定 jquery.ui.dialog打开时的位置
///////////////////////////////////
(function($) {
var originOpen = $.ui.dialog.prototype.open
$.ui.dialog.prototype.open = function() {
//var event= window.event || arguments.callee.caller.arguments[0];
//var event = event || window.event;
var event = getEvent();
//alert(event) // ie 和 ff下,都显示 "[object]"
var PosX = 0;
var PosY = 0;
if (event.pageX || event.pageY) {
PosX = event.pageX;
PosY = event.pageY;
}
else {
PosX = event.clientX + document.body.scrollLeft - document.body.clientLeft;
PosY = event.clientY + document.body.scrollTop - document.body.clientTop;
};
this.options.position = [PosX, PosY];
//alert(this.options.position);
originOpen.apply(this, arguments);
}; function getEvent() { //同时兼容ie和ff的写法
if (document.all) return window.event;
func = getEvent.caller;
while (func != null) {
var arg0 = func.arguments[0];
if (arg0) {
if ((arg0.constructor == Event || arg0.constructor == MouseEvent)
|| (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
return arg0;
}
}
func = func.caller;
}
return null;
}
})(jQuery);
主要问题是类的声明问题:这种声明如何理解?
(function(){})()
就是定义一个自执行的匿名函数。
可能是专职php程序员,不会javascript。。
也就是先声明这个函数,完了之后马上运行一把.类似于:
var ff = function(){..}
ff();
但var editor = function(){ }();这个怎么理解?
var editor = function(){ }定义匿名函数不行吗?为什么还要多加个括号。
editor.init();
});他调用了匿名函数的return里的方法。有点理解了,匿名函数返回一个对象,它实质调用返回对象里的方法。但有一问题:如果外部调用,是否是return里的方法和return外的方法都能调用。还有一个问题:匿名函数里的方法能否被其他全局对象调用(不是editor),想了解一下方法的作用域。
init : function() { this.allowFields = new allowEditFields();} //但是这个allowFields就存在了
}
还有一个问题:匿名函数里的方法能否被其他全局对象调用(不是editor),想了解一下方法的作用域。
不能~~这个方法只能供你的editor来使用了,隐藏变量就是这个目的~
但如果在其他地方:editor.Fields();允不允许?
function Test() {
this.age = 24;
}
return {
init:function(){
this.name = "jeechang";
},
test:Test
};
}();
g.init();
alert(g.name);//jeechang
g.test();
alert(g.age);//24
alert(g.Test());//error
希望你能明白~
这个是不允许的!
Fields 是 editor 的私有局部变量,只能在 editor 内部使用function a()
{
var aa=1; // 私有变量
this.bb =2; // 公共变量,外面可以通过a 的实例来访问
}
(function(){
alert("dd")
})(); void function(){
alert("dd")
}(); ~function(){
alert("dd")
}();
!function(){
alert("dd")
}();第二个例子也是一样的
也是一个自执行函数 。只不过带了一个参数
自执行函数后的()的里面与函数的参数一致!!
代码: (function(b){
var c=b;
})(b) //这个b不能少,,少了的话,,就不会被传进去!!!$与jquery是一个意思 它们指向的都 是同一个对象
jquery=window.jquery=window.$=function(){
.....
} //jquery里面的