DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 某人初學javascript的時候寫的學習筆記
某人初學javascript的時候寫的學習筆記
編輯:關於JavaScript     
復制代碼 代碼如下:
/*
* JavaScript對象就是一組屬性(方法)的集合
* 在該語言中如果變量名或方法名不符合聲明規范,
* 則一定得用方括號“ [] ”引用它
*
*/
/**
* <1.>該語句聲明了一個class1類,class1相當於構造方法,又叫構造器
* 也可說聲明了一個class1方法
*/
function class1(){
this.name="xjl"; //給對象添加屬性
this.say= function(){alert("大家好!");}; //給對象添加方法
};
/**
* <2.>創建實例用 new 關鍵字,new 操作符不僅對內部類有效,對用戶定義的類也是同樣的用法
* 每個對象可以看作是多個屬性(方法)的集合,即 對象名.屬性(方法)名 或 對象名[“屬性(方法)名”]
* 方括號 '[]' 適合不確定具體要引用哪個屬性(方法)的場合
*/
var a = new class1();
//alert(typeof(a)); //typeof(a) 返回a的類型
//alert(a.name); //每個對象可以看作是多個屬性(方法)的集合,
//alert(a['name']); //用方括號([])引用對象的屬性和方法
//下拉框對象名[下拉框對象.value] 即可獲得用戶所選的值 也可用 eval(“下拉框對象名.”+下拉框對象.value);
//a.say(); //調用對象的方法
//var arr=new Array();
//arr['push']('abc'); //為數組添加一個元素,其中的 push 為內置的屬性
//arr['push']('1234'); //為數組添加一個元素
//alert(arr);
/**
* <二.>動態添加、修改、刪除對象的屬性和方法
*
*/
var obj = new Object();
//添加屬性……其中的屬性名可任意取
obj.name="徐建龍";
obj.sex = '男';
obj['my name'] = "xujianlong"; //使用方括號 “ [] ”可以使用非標識符字符串作為屬性名稱
//添加方法……方法名也可任意取,也可傳參數
obj.alert = function(a){
alert(a+"你好!");
}
//修改屬性,就是把屬性的值改成別的內容
obj.name = "張三";
obj['name'] = 'anme';
//刪除屬性,就是把屬性的值改成 undefined 或 null
obj.name = 'undefined';
/**
* <三>使用大括號({})語法創建無類型對象
*/
//在大括號中方屬性和方法,屬性與屬性用逗號隔開,屬性與值之間用冒號隔開
var ob = {
name:"123",
say:function(){alert("123")} //最後一個屬性或方法不用逗號
}
//也可用如下方法定義對象的屬性和方法
var ob1 = {"name":'123','say':function(){alert("abcd");}};
/**
*<四>prototype原型對象
* 所有的函數(function)對應的類是(Function)
* prototype 實際上就是表示了一個類的成員的集合。
* *當通過new 來獲取一個類的對象時,prototype 對象的成員都會成為實例化對象的成員。
*/
function class2(){ //創建一個對象
}
var ob2 = new class2();
class2.prototype.me = function(){alert("123");} //在prototype的前面是,你所創建的類名
class2.prototype.name = "123"; //
/**
* 函數對象和其他內部對象的關系
*/
//typeof(new Function()),typeof(Function),typeof(Array),typeof(Object) 返回字符串“function”這些參數稱之為構造器
//typeof(new Date()),typeof(new Array()),typeof(new Object()) 返回字符串“object”
/**
* 傳遞給函數的隱含參數:arguments,它具有數組的特點,但它不是數組,可用下標來訪問它
*/
//arguments 中包含了一個參數 callee, 它表示對 函數對象本身的引用,如下:
var sum=function(n){
if(1==n)
return 1;
else
return n+arguments.callee(n-1);
}
//該語句表示聲明一個 namespace1 的命名空間 ,如下:
var namespace1 = new Object();
namespace1.class1 = function(){alert("123");};
var obj1=new namespace1.class1(); //頁面加載時就執行
/**
* 使用prototype 對象定義類成員
*/
//在創建實例的語句之後使用函數的prototype屬性給類定義新成員,只會對後面創建的對象有效
//在prototype中的constructor()方法 ,相當於構造方法
function class1(){
//alert('adf');
}
//class1.prototype.constructor(); //頁面加載時就執行
//用prototype 定義的簡化
class1.prototype={
//放入一些屬性或方法
//多個屬性或方法是用逗號(,)隔開
}
//如下代碼即是 靜態方法和屬性
class1.name="abc";
class1.say = function(){/*codes*/}
//利用反射機制,可以改變 element 中指定的樣式,而其他樣式不會改變,得到了所要的結果,例如:
function setStyle(_style){
//得到要改變樣式的界面對象
var element=getElement();
for(var p in _style){
element.style[p]=_style[p];
}
}
//可以通過拷貝一個類的 prototype 到另外一個類來實現繼承,但有缺陷。例如:
// function class4(){}
//
// function class2(){
//
//
// class2.prototype=class4.prototype; //實現的繼承
// class2.prototype.f = function(){alert("a");}
//
//當對class2 進行prototype 的改變時,class4 的prototype 也隨之改變
// instanceof 操作符來判斷一個對象是否是某個類的實例, 例如:
var a = new class2();
a instanceof class2; //返回一個 bool ,如果 a 的class2 中的繼承類,則也是 true
//一種更好的繼承
for(var p in class1.prototype){
class2.prototype[p]=class1.prototype[p];
}
class2.prototype.ma=function(){
alert(123);
}
//當對class2 進行prototype 的改變時,class4 的prototype 不會改變
/**
* prototype-1.3.1框架中的類繼承實現機制
*/
//-------------------------------------------------------------------------------------------
//該語句為每個對象天加一個extend 方法,代碼如下;
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property]; //將source中所有的屬性或方法都賦值給destination
}
return destination;
}
//通過Object類為每個對象添加方法extend
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
Object.extend.apply(this,[this,object]);
//class1繼承與class2 ,好處是 通過new class2()相當於把class2的prototype的副本賦給class1
//在class1中的prototype的改變,不會影響class2中的prototyp
class1.prototype=(new class2()).extend({/*class1要增加的屬性或方法*/});
/**
* 只做了一個聲明而未實現的方法,具有虛函數的類就稱之抽象類 ,抽象類是不能實例化的
*/
//裡虛方法不需經過聲明,而直接使用了。這些方法將在派生類中實現,例如:
function c1(){}
c2.prototype={
fun:function(){ this.fn();}//其中的fn方法未定義
}
function c2(){}
c1.prototype=(new c2()).extend({
fn:function(){var x = 1;}
});
//this.initialize.apply(this, arguments);該語句是把創建對象時的參數傳給initialize方法
/***
* 在javascript中也可以用 try-catch-finally 語句用於捕獲異常或錯誤信息
* 其中在catch(e)的小括號中的e 是必須的 e是一個名為error 的對象
* e=new Error(message)來創建這個對象,異常的描述被作為error 對象的一個屬性message,
*/
//該代碼演示了異常的拋出
function s(a,b){
try{
if(b==0)
throw new Error("除數不能為零!........");
else
alert(a/b)
}catch(e){
document.write(e.message);///通過message 獲得Error中的實參
}
}
onlaod=s(1,0);
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved