真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

由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);

免費(fèi)會員網(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");
免費(fèi)會員網(wǎng)
  
var arr2=new Array("4","5","6");
  
Array.prototype.push.apply(arr1,arr2);//向數(shù)組尾部添加一項(xiàng)并更新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呢?不解

免費(fèi)會員網(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ù)類型的知識點(diǎn)。

到此處參考的資料:

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

 

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

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

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

1、number

2、string

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

因?yàn)槲覀兌贾涝碱愋偷闹荡鎯υ跅V?,因?yàn)榇笮」潭?,?nèi)存較小,查找起來快;引用類型的值存在堆中,而引用的變量中存的是其值的地址,地址是固定的,所以存在棧中,但它的值是存在堆中的,變量中存的是它的地址。

3、undefind

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

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

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

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

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

免費(fèi)會員網(wǎng)

4、null

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

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

這是因?yàn)橹?undefined 實(shí)際上是從值 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

因?yàn)橹刀际谴嬖跅V校灾祩鬟f。

引用類型的傳參,例子一

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。因?yàn)閛bj和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


網(wǎng)頁名稱:由jsapply與call想到的js數(shù)據(jù)類型
新聞來源:http://weahome.cn/article/iejpgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部