欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Js組件的一些寫(xiě)法

 更新時(shí)間:2010年09月10日 16:47:42   作者:  
今天看了rank的一篇javascript腳本控件topic,突然想總結(jié)一下一些寫(xiě)JS組件的方法,或者說(shuō)一些不同人的不同coding style。
今天看了rank的一篇javascript腳本控件topic,突然想總結(jié)一下一些寫(xiě)JS組件的方法,或者說(shuō)一些不同人的不同coding style。

  首先看下Prototype里的寫(xiě)法:
復(fù)制代碼 代碼如下:

var Class = {
create: function() {
return function() { this.init.apply(this, arguments); }
}
}
var A = Class.create();
A.prototype = {
init: function(msg) {
this.msg = msg;
},
fn: function() {
alert(this.msg);
}
}
var a = new A("myMsg");
a.fn();

如果你不喜歡上面這一大堆Class.create之類(lèi)的,你也可以這樣:
復(fù)制代碼 代碼如下:

function A() { } //var A = function(){}
A.prototype = {
init: function(msg) {
this.msg = msg;
},
fn: function() {
alert(this.msg);
}
}
var a = new A();
a.init("myMsg");
a.fn();

當(dāng)然,也可以把this.msg的初始化放到function A(msg){this.msg=msg;}里??傊銜?huì)發(fā)現(xiàn)這樣調(diào)用很麻煩,并且參數(shù)是固定對(duì)應(yīng)好的。
  你如果既不愿搞一大堆Class.create,也不愿調(diào)用不方便,那就把Prototype里的var Class = {...} 和 var A = Class.create();合并起來(lái)。得到:
復(fù)制代碼 代碼如下:

function A() {
this.init.apply(this, arguments);
}
A.prototype = {
init: function(msg) {
this.msg = msg;
},
fn: function() {
alert(this.msg);
}
}
var a = new A("myMsg");
a.fn();

看上去干凈了許多,但是如果你的庫(kù)里有很多組件,則每個(gè)組件都要寫(xiě)一遍this.init.apply(this, arguments); 如果用Class.create的話(huà),則只要寫(xiě)一個(gè)Class,然后每個(gè)組件執(zhí)行下Class.create()即可。當(dāng)然,每個(gè)組件都寫(xiě)一遍this.init.apply(this, arguments);也沒(méi)啥不好的,還是看個(gè)人喜好了。另外寫(xiě)原型方法是合在一起還是分開(kāi)來(lái)寫(xiě)也是個(gè)人喜好,出于封裝的角度,合一起好,但是分開(kāi)有時(shí)候顯的更清晰。譬如A.prototype.init=function(msg){...} A.prototype.fn=function(){...}

  然后還有人喜歡這樣去寫(xiě)組件:
復(fù)制代碼 代碼如下:

var A = function(msg) {
this.msg = msg;
var _this = this;
var privateFn1 = function() {
alert(_this.msg);
}
var privateFn2 = function() {
alert(_this.msg);
}
return { fn1: privateFn1, fn2: privateFn2 };
}
var a = new A("myMsg");
a.fn1();

這邊一定要把A構(gòu)造的對(duì)象this放到臨時(shí)變量_this中哦,因?yàn)檫\(yùn)行時(shí),privateFn1的函數(shù)體內(nèi)this實(shí)際是{fn1:...,fn2:...}這樣的匿名對(duì)象,你可以用this.hasOwnProperty("fn1")去測(cè)試。this是在運(yùn)行時(shí)才有意義的一個(gè)東西。另外這種方法每個(gè)對(duì)象都會(huì)有privateFn1 和 privateFn2的副本,這種方法不太好。

 ?。ㄎ赐甏m(xù),下面會(huì)講些不同框架的一些寫(xiě)法)
作者:JayChow

相關(guān)文章

最新評(píng)論