復制代碼 代碼如下:view plaincopy to clipboardprint? var obj1=new Object(); var obj2=new Object();

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

//給obj1添加方法,用于顯示 " /> 一边喂奶一边做边爱,免费观看成人www精品视频在线,欧美日本高清动作片www网站

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript基本概念初級講解論壇貼的學習記錄

1.關于this對象

復制代碼 代碼如下:
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
}

//調用obj1的getP方法,結果顯示為1
obj1.getP();

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

//調用obj2的getP方法,結果顯示為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
}

//調用obj1的getP方法,結果顯示為1
obj1.getP();

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

//調用obj2的getP方法,結果顯示為2
obj2.getP();


2.關于函數對象


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



//增加對象方法getType,既包括普通對象也包括函數對象
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內部進行theFunc的調用
function func1(theFunc){
theFunc();
}
function func2(){
alert("ok");
}
func1(func2); //提示:ok



//當進行函數調用時,除了指定的參數外,還創建一個隱含的對象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,
它表示對函數對象本身的引用.
這有利于實現無名函數的遞歸或者保證函數的封裝性.
*/
var sum=function(n){
if(1==n)
return 1;
else
return n+arguments.callee(n-1);
}
alert(sum(100)); //提示:5050



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

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

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



/*
與arguments的length屬性不同,
函數對象還有一個屬性length,
它表示函數定義時所指定參數的個數,
而非調用時實際傳遞的參數個數
*/
function sum(a,b){
return a+b;
}
alert(sum.length);

JavaScript技術JavaScript基本概念初級講解論壇貼的學習記錄,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 18禁黄无遮挡禁游戏在线下载 | 国产亚洲va在线电影 | 国产午夜a理论毛片在线影院 | 草莓视频在线播放视频 | 亚洲 欧美 中文 日韩 视频 | 视频在线观看高清免费看 | 国产成人h在线视频 | 天天躁日日躁狠狠躁午夜剧场 | 99RE6这里只有精品国产AV | 亚州日韩精品AV片无码中文 | 久久五月综合婷婷中文云霸高清 | 一区视频免费观看 | 美女禁处受辱漫画 | 久久国产加勒比精品无码 | 男人插曲女人身体视频 | 色欲国产麻豆一精品一AV一免费 | 国产亚洲精品线观看不卡 | 日本19禁啪啪吃奶大尺度 | 亚洲日本在线不卡二区 | 成人精品视频在线观看播放 | 极品少妇小泬50PTHEPON | 久久成人免费观看全部免费 | 国产中文字幕免费观看 | 色欲狠狠躁天天躁无码中文字幕 | 日本十八禁无遮无挡漫画 | 办公室里呻吟的丰满老师电影 | 国产在线高清亚洲精品一区 | 2020国产成人精品视频人 | 国产成人综合网在线观看 | 手机在线免费看毛片 | 四虎永久免费 | 99精品国产第一福利网站 | 无码成人AAAAA毛片含羞草 | 少妇连续高潮抽搐痉挛昏厥 | 国产h视频在线观看网站免费 | 邪恶肉肉全彩色无遮盖 | 闺蜜撬开我的腿用黄瓜折磨我 | 边做边爱免费视频 | 91偷偷久久做嫩草电影院 | 日日碰狠狠躁久久躁综合网 | 天天影视香色欲综合网 |