成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

由jsapply與call想到的js數(shù)據(jù)類型

js的call方法與apply方法的區(qū)別在于第二個參數(shù)的不同,他們都有2個參數(shù),第一個為對象(即需要用對象a繼承b,那么此時第一個參數(shù)就為a,沒有則為null),call方法第二個參數(shù)為一個列表,可以是

創(chuàng)新互聯(lián)建站主營天元網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),天元h5微信小程序開發(fā)搭建,天元網(wǎng)站營銷推廣歡迎天元等地區(qū)企業(yè)咨詢

1
obj.call(null, 1,2,3,4);

免費會員網(wǎng)
  

而apply第二個參數(shù)為數(shù)組。這就是區(qū)別,下面來說說對它們的認(rèn)識。

 

apply最常用的就是查找數(shù)組中的最大與最小值,還可以將2個數(shù)組合并:

1
2
3
4
5
6
7
8
9
var max=Math.max.apply(null,array);
  
 var min=Math.min.apply(null,array);
  
var arr1=new Array("1","2","3");
免費會員網(wǎng)
  
var arr2=new Array("4","5","6");
  
Array.prototype.push.apply(arr1,arr2);//向數(shù)組尾部添加一項并更新length ,返回數(shù)組長度。

這里的Array.prototype.push本身是不能合并2個數(shù)組的,如下:

1
2
3
4
5
6
7
var arr1 = ['1','2','3'];
  
var arr2 = ['4','5','6'];
  
alert(Array.prototype.push(arr1,arr2));//返回2
  
alert(Array.prototype.push.apply(arr1,arr2));//返回6

疑問:

1
2
3
4
5
6
7
var arr1 = ['1','2','3'];
  
var arr2 = ['4','5','6'];
  
arr1.push(arr2);
  
alert(arr1);//返回卻是1,2,3,4,5,6呢?不解

免費會員網(wǎng)
  

當(dāng)然,apply與call也可以用來繼承類的方法。

簡單的舉個例子:

創(chuàng)建對象的四種寫法:

第一種

1
2
3
4
5
6
7
8
9
function People(name, sex){
 this.name = name;
 this.sex = sex;
 this.show = function(){
 alert(this.name+'sex'+this.sex+'say hello');
 }
 }
 var ming = new People('y', 'nan');
 ming.show();

第二種

1
2
3
4
5
6
7
var People1 = {
name : 'ming',
show : function(){
alert(this.name);
}
}
People1.show();

第三種:用prototype去為對象增加屬性或者方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function CicleTwo(r){
  
this.r = r;
  
}
  
CicleTwo.prototype.area = function () {
  
console.log('第二種:'+Math.PI * this.r * this.r) ;
  
};
  
//測試
  
var newCicleTwo = new CicleTwo(3);
  
newCicleTwo.area();

第四種

1
2
3
4
5
6
7
var People2 = new Object();
People2.name = 'A';
People2.show = function(){
alert("ok");
}
  
alert(People2.name);

這里用people1去繼承people

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function People(name, sex){
this.name = name;
this.sex = sex;
this.show = function(){
alert(this.name+'sex'+this.sex+'say hello');
}
}
var ming = new People('y', 'nan');
// ming.show();
  
var People1 = {
name : 'ming',
show : function(){
alert(this.name);
}
}
// People1.show();
  
People1.show.apply(ming);//彈出y,而不是ming,說明繼承了people中的名字y


今天就到這里了,太晚了,明天再整理數(shù)據(jù)類型的知識點。

到此處參考的資料:

http://www.cnblogs.com/KeenLeung/archive/2012/11/19/2778229.html

 

========================================================

6-22  11點繼續(xù)學(xué)習(xí):js數(shù)據(jù)類型,參數(shù)傳遞的問題。

原始數(shù)據(jù)類型(5種)

1、number

2、string

是唯一沒有固定大小的原始類型。

因為我們都知道原始類型的值存儲在棧中,因為大小固定,內(nèi)存較小,查找起來快;引用類型的值存在堆中,而引用的變量中存的是其值的地址,地址是固定的,所以存在棧中,但它的值是存在堆中的,變量中存的是它的地址。

3、undefind

當(dāng)聲明變量后沒有初始化,并不是未定義變量

1
2
3
var oTemp;
alert(typeof oTemp);  //輸出 "undefined"
alert(typeof oTemp2);  //輸出 "undefined"

前面的代碼對兩個變量輸出的都是 “undefined”,即使只有變量 oTemp2 從未被聲明過。如果對 oTemp2 使用除 typeof 之外的其他運算符的話,會引起錯誤,因為其他運算符只能用于已聲明的變量上。

當(dāng)函數(shù)無明確返回值時,返回的也是值 “undefined”,如下所示:

1
2
3
function testFunc() {
}
alert(testFunc() == undefined);  //輸出 "true"

免費會員網(wǎng)

4、null

表示尚未存在的對象,如果函數(shù)或方法要返回的是對象,那么找不到該對象時,返回的通常是 null。

1
alert(null == undefined);  //輸出 "true"

這是因為值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義為相等的。

5、boolean

 引用數(shù)據(jù)類型,常見的有Object,Array,Function,Date。

所有的傳參都是傳遞的值。

簡單的原始數(shù)據(jù)傳參

1
2
3
4
5
6
7
8
9
10
11
function show(num){
  
var a = 5;
  
num = a;
  
alert(num);
  
}
  
show(2);//返回5

因為值都是存在棧中,以值傳遞。

引用類型的傳參,例子一

1
2
3
4
5
6
function setName(obj){
obj.name = 'abc';
}
var person=new Object();
setName(person);
alert(person.name);

初始化一個對象person,person指向的是對象本身的地址,然后通過函數(shù)將person對象設(shè)置一個name屬性值為’abc’;這里始終 要記住的是,傳遞過來的地址,是用在函數(shù)內(nèi)部聲明的局部變量obj來保存,相當(dāng)于將person對象地址值賦值給obj。因為obj和person指向的 是同一個對象,當(dāng)obj變化后,person也會表現(xiàn)出來。

再來看這個例子

1
2
3
4
5
6
7
8
function setName(obj){
obj.name = 'abc';
obj = new Object();
obj.name = "def";
}
var person=new Object();
setName(person);
alert(person.name);//abc

在函數(shù)中可以看到,將函數(shù)內(nèi)部的局部變量obj重新賦值了一個新的對象地址。此時obj就不在指向person了,那當(dāng)然結(jié)果返回abc而不是def。

參考資料:

http://www.w3school.com.cn/js/pro_js_primitivetypes.asp

http://www.zhihu.com/question/27114726

http://www.zhihu.com/question/27114726

javascript 中數(shù)據(jù)類型

http://www.jb51.net/article/29703.htm

新聞名稱:由jsapply與call想到的js數(shù)據(jù)類型
鏈接地址:http://jinyejixie.com/article12/iejpgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司網(wǎng)站內(nèi)鏈網(wǎng)站收錄、網(wǎng)站維護網(wǎng)頁設(shè)計公司、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
宜丰县| 双峰县| 米林县| 建德市| 鲁山县| 定南县| 金寨县| 邵武市| 三河市| 乐亭县| 贵南县| 汉中市| 米林县| 太和县| 秀山| 梅州市| 阿城市| 天津市| 会泽县| 随州市| 双柏县| 龙州县| 汾阳市| 万宁市| 山阴县| 通山县| 平乐县| 措勤县| 古田县| 孝昌县| 舞钢市| 金坛市| 江源县| 隆化县| 吴江市| 闽清县| 孟津县| 东阳市| 无棣县| 凌海市| 米易县|