首先介紹一個網站,我很多書本都是在上面下載的,很好。http://www.freebookspot.in/
我現在學習的書本是:Pro Javascript Design Pattern
首先簡單地為優雅的Javascript代碼開個頭
1.隨意的Javascript,有表現力的Javascript
常用Javascript代碼:
我喜歡的定義類的方法:
var MyClass = Class.create();

MyClass.prototype =
{
//construction function
initialize : function(para1, para2)
{
this.property1 = para1;
this.property2 = para2;
},
//public function
fun1 : function()
{
},
//private function
fun2 : function()
{
}
};
//call 和 apply的意義與用法

//<input type="text" id="myText" value="input text">
function Obj(){this.value="對象!";}
var value="global 變量";
function Fun1(){alert(this.value);}

window.Fun1(); //global 變量
Fun1.call(window); //global 變量
Fun1.call(document.getElementById('myText')); //input text
Fun1.call(new Obj()); //對象!

//call函數和apply方法的第一個參數都是要傳入給當前對象的對象,及函數內部的this。后面的參數都是傳遞給當前對象的參數。
var func=new function(){this.a="func"}
var myfunc=function(x){
var a="myfunc";
alert(this.a);
alert(x);
}
myfunc.call(func,"var");
/*可見分別彈出了func和var。到這里就對call的每個參數的意義有所了解了。

對于apply和call兩者在作用上是相同的,但兩者在參數上有區別的。
對于第一個參數意義都一樣,但對第二個參數:
apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。
如 func.call(func1,var1,var2,var3)對應的apply寫法為:func.apply(func1,[var1,var2,var3])

同時使用apply的好處是可以直接將當前函數的arguments對象作為apply的第二個參數傳入*/
隨意、寬松的表現1:Javascript的弱類型:null, undefined, boolean, number, String, Object, 特別的對象Array
隨意、寬松的表現2:匿名函數
//匿名函數的調用方法
(function(para1,para2)
{
return para1 + para2;
})(1,3);
Javascript對象類型的不定性、可變性,即建造的類可以動態改變,即使已經聲明的對象也能隨改變的類而改變,如下:
/* Class Person. */
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
getName: function() {
return this.name;
},
getAge: function() {
return this.age;
}
}
/* Instantiate the class. */
var alice = new Person('Alice', 93);
var bill = new Person('Bill', 30);

/* Modify the class. */
Person.prototype.getGreeting = function() {
return 'Hi ' + this.getName() + '!';
};

/* Modify a specific instance. */
alice.displayGreeting = function() {
alert(this.getGreeting());
}
與類的不定性相關的是,Javascript語言的另一特點,反射機制,即可以在運行時檢測類所具有的屬性和方法。
運用設計模式的三大原因:
可維護性
溝通交流性
性能追求
不使用設計模式的兩大原因:
復雜性
性能追求
我現在學習的書本是:Pro Javascript Design Pattern
首先簡單地為優雅的Javascript代碼開個頭
1.隨意的Javascript,有表現力的Javascript
常用Javascript代碼:
1
var isIE = (document.all) ? true : false;
2
3
var $ = function (id) {
4
return "string" == typeof id ? document.getElementById(id) : id;
5
};
6
7
var Class = {
8
create: function() {
9
return function() {
10
this.initialize.apply(this, arguments);
11
}
12
}
13
}
14
15
var Extend = function(destination, source) {
16
for (var property in source) {
17
destination[property] = source[property];
18
}
19
}
20
21
var Bind = function(object, fun) {
22
return function() {
23
return fun.apply(object, arguments);
24
}
25
}
26
27
var Each = function(list, fun){
28
for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
29
};

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

我喜歡的定義類的方法:



















































隨意、寬松的表現1:Javascript的弱類型:null, undefined, boolean, number, String, Object, 特別的對象Array
隨意、寬松的表現2:匿名函數





Javascript對象類型的不定性、可變性,即建造的類可以動態改變,即使已經聲明的對象也能隨改變的類而改變,如下:


























運用設計模式的三大原因:
可維護性
溝通交流性
性能追求
不使用設計模式的兩大原因:
復雜性
性能追求
名稱: ?4C.ESL | .↗Evon
口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
mail: 聯系我