国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript基本概念初級講解論壇貼的學(xué)習(xí)記錄

2019-11-21 01:27:40
字體:
供稿:網(wǎng)友
1.關(guān)于this對象

復(fù)制代碼 代碼如下:

view plaincopy to clipboardprint?
var obj1=new Object();
var obj2=new Object();

//給兩個對象都添加屬性p,并分別等于1和2
obj1.p=1;
obj2.p=2;

//給obj1添加方法,用于顯示p的值
obj1.getP=function(){
alert(this.p); //表面上this指針指向的是obj1
}

//調(diào)用obj1的getP方法,結(jié)果顯示為1
obj1.getP();

//使obj2的getP方法等于obj1的getP方法
obj2.getP=obj1.getP;

//調(diào)用obj2的getP方法,結(jié)果顯示為2
obj2.getP();
var obj1=new Object();
var obj2=new Object();

//給兩個對象都添加屬性p,并分別等于1和2
obj1.p=1;
obj2.p=2;

//給obj1添加方法,用于顯示p的值
obj1.getP=function(){
alert(this.p); //表面上this指針指向的是obj1
}

//調(diào)用obj1的getP方法,結(jié)果顯示為1
obj1.getP();

//使obj2的getP方法等于obj1的getP方法
obj2.getP=obj1.getP;

//調(diào)用obj2的getP方法,結(jié)果顯示為2
obj2.getP();


2.關(guān)于函數(shù)對象


復(fù)制代碼 代碼如下:

//增加函數(shù)對象方法method1
Function.prototype.method1=function(){
alert("function1");
}
function func1(a,b,c){
return a+b+c;
}
func1.method1(); //提示:function1
func1.method1.method1(); //提示:function1



//增加對象方法getType,既包括普通對象也包括函數(shù)對象
Object.prototype.getType=function(){
return typeof(this);
}
var array1=new Array();
function func1(a,b){
return a+b;
}
alert(array1.getType()); //提示:object
alert(func1.getType()); //提示:function



//func2作為一個對象傳遞給了func1的形參theFunc,再由func1內(nèi)部進行theFunc的調(diào)用
function func1(theFunc){
theFunc();
}
function func2(){
alert("ok");
}
func1(func2); //提示:ok



//當(dāng)進行函數(shù)調(diào)用時,除了指定的參數(shù)外,還創(chuàng)建一個隱含的對象arguments
function func(a,b){
alert(a);
alert(b);
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);
}
}
func(1,2,3); //提示:1,2,3



/*
arguments對象的另一個屬性是callee,
它表示對函數(shù)對象本身的引用.
這有利于實現(xiàn)無名函數(shù)的遞歸或者保證函數(shù)的封裝性.
*/
var sum=function(n){
if(1==n)
return 1;
else
return n+arguments.callee(n-1);
}
alert(sum(100)); //提示:5050



/*
JavaScript為函數(shù)對象定義了兩個方法:apply和call.
它們的作用都是將函數(shù)綁定到另外一個對象上去運行,兩者僅在定義參數(shù)的方式有所區(qū)別:
以下是引用片段:
Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg[,arg1[,arg2…]]);

從函數(shù)原型可以看到,第一個參數(shù)都被取名為thisArg,
即所有函數(shù)內(nèi)部的this指針都會被賦值為thisArg,
這就實現(xiàn)了將函數(shù)作為另外一個對象的方法運行的目的。
兩個方法除了thisArg參數(shù),都是為Function對象傳遞的參數(shù)。
*/

//定義一個函數(shù)func1,具有屬性p和方法A
function func1(){
this.p="func1-";
this.A=function(arg){
alert(this.p+arg);
}
}
//定義一個函數(shù)func2,具有屬性p和方法B
function func2(){
this.p="func2-";
this.B=function(arg){
alert(this.p+arg);
}
}
var obj1=new func1();
var obj2=new func2();
obj1.A("byA"); //顯示func1-byA
obj2.B("byB"); //顯示func2-byB
obj1.A.apply(obj2,["byA"]); //顯示func2-byA,其中[“byA”]是僅有一個元素的數(shù)組,下同
obj2.B.apply(obj1,["byB"]); //顯示func1-byB
obj1.A.call(obj2,"byA"); //顯示func2-byA
obj2.B.call(obj1,"byB"); //顯示func1-byB
/*
可以看出,obj1的方法A被綁定到obj2運行后,
整個函數(shù)A的運行環(huán)境就轉(zhuǎn)移到了obj2,即this指針指向了obj2。
同樣,obj2的函數(shù)B也可以綁定到obj1對象去運行。
代碼的最后4行顯示了apply和call函數(shù)參數(shù)形式的區(qū)別。
*/



/*
與arguments的length屬性不同,
函數(shù)對象還有一個屬性length,
它表示函數(shù)定義時所指定參數(shù)的個數(shù),
而非調(diào)用時實際傳遞的參數(shù)個數(shù)
*/
function sum(a,b){
return a+b;
}
alert(sum.length);
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁波市| 蓝田县| 湾仔区| 萍乡市| 随州市| 昌黎县| 石林| 林甸县| 息烽县| 镇沅| 讷河市| 金昌市| 铜梁县| 山东省| 江阴市| 清河县| 弥勒县| 当雄县| 苍南县| 托克逊县| 苗栗市| 镇沅| 福建省| 临泽县| 闻喜县| 诏安县| 辽阳市| 高淳县| 东至县| 凌云县| 皋兰县| 营山县| 壤塘县| 尉犁县| 永州市| 浮山县| 云霄县| 瑞昌市| 萝北县| 股票| 出国|