==============關於元素的顯示和隱藏=============
Visibility快於Display
讓圖畫時隱時現會創造很有趣的效果,有2種方法可以實現這個目的:使用CSS的visibility屬性或者
display屬性。對於絕對位置元素,diaplay和visibility具有同樣的效果。兩者的區別在於:設定為
display:none的元素將不再佔用文檔流的空間,而設定為visibility:hidden的元素仍然保留原位置。
==============一點經驗=======================
1、JS變數沒有塊範圍,在判斷迴圈中的定義在整個函數內都有定義
2、split()的參數是一個正則字串,因此如果用鄭澤運算式特殊字元作為參數時一定要轉義
=============隱去瀏覽器中當滑鼠移到圖片上跳出的工具列=============
<img galleryimg="no">
或者
<head>
<meta http-equiv="imagetoolbar" content="no">
</head>
=============一些技巧==================
1、#串連不會回到頂部
<a href="#" ōnClick="return false">
---------------
2、關閉不提示
opener=null;
window.close();
============js物件導向編程的一些總結=============
1、靜態屬性類執行個體訪問不到,同樣執行個體屬性只能執行個體訪問
var myfun=function(){this.a="a"};
myfun.b="b";
alert(new myfun().a);//輸出a
alert(myfun.a);//輸出undefined
alert(myfun.b);//輸出b
alert(new myfun().b);//輸出undefined
2、給prototype添加屬性
添加給prototype的屬性將會成為使用這個建構函式建立的對象的通用屬性。
function Fish(name, color)
{
this.name=name;
this.color=color;
}
Fish.prototype.livesIn="water";
Fish.prototype.price=20;
正如上面的例子所示,每條執行個體魚可以有不同的名字和顏色,但是他們有一個共同的屬性,那就是都生活在水裡。
這時因為當一個對象被建立時,這個建構函式將會把它的屬性prototype賦給新對象的內部屬性__proto__。這個__proto__被這個對象用來尋找它的屬性。
3、用prototype給對象添加函數
通過prototype來給所有對象添加共用的函數。這有一個好處:你不需要每次在構造一個對象的時候建立並初始化這個函數。
4、每個函數都有一個靜態name屬性(同樣,每個內建類都有一個靜態name屬性),這個屬性不能也不會被覆蓋
function a()={};
var b=new Function();
alert(b.name);//輸出anonymous
alert(a.name);//輸出a
alert(Array.name);//輸出Array
==================關於this==================
之所以說一下this,是因為他並不完全等同於C++或者Java裡面的this變數。
this在js中表示緊貼著調用地點的,非prototype擴充的方法。
比如上面提到的
MyObj.prototype.sayBye = function () {
alert(”Bye” + this.name);
}
這個裡面的this,緊貼的非prototype的函數是MyObj(再次注意,js中class是通過函數實現的),所以this.name就是執行個體變數。
但是在這種情況
MyObj.prototype.doSomething = function () {
todo(function () {
alert(this.name);
});
}
這個時候,this表示的是這個匿名函數
function () {
alert(this.name)
}
那麼這裡就會出現錯誤,如果想要這樣使用,應該使用輔助變數。
MyObj.prototype.doSomething = function () {
var me = this; //把自己的reference賦值給變數me
todo (function () {
alert(me.name); //通過me來訪問myObj執行個體
});
}