JS基礎(chǔ)二

對象

創(chuàng)建

第一種 new Object()

    var  student = new Object();

    student.name = "123";
    student.say = function () {
      console.log(this.name);
    }

    student.say();

第二種 創(chuàng)建一個函數(shù)去創(chuàng)建對象

    var createStu = function (name,age,address) {
      var student = new Object();
      student.name = name;
      student.age = age;
      student.address = address;
      student.say = function () {
        console.log(this.name + "說大家好我來自" + this.address);
      }
      return student;
    }

    var stu = createStu("張三",18,"北京");
    stu.say();
    var stu1 = createStu("小明",19,"香港");
    stu1.say();

第三種 構(gòu)造函數(shù)

    function Student(name,age,address) {
      //構(gòu)造函數(shù)中this被代指成對象
      this.name = name;
      this.age = age;
      this.address = address;
      this.say = function () {
        console.log(this.name + "說大家好我來自" + this.address);
      }
    }

    var  stu = new  Student("張三",14,"北京");
    stu.say();

    var address = "address";
    stu["name"] = "李四";//修改屬性可以通過[]訪問
    stu[address] = "香港";
    stu.say();

this和new

this

  • this只出現(xiàn)在函數(shù)中
  • 誰調(diào)用函數(shù),this就指誰
  • new 創(chuàng)建的對象墅拭,this代指被創(chuàng)建的實(shí)例對象

new

  • 開辟內(nèi)存空間活玲,存儲新創(chuàng)建的實(shí)例對象
  • 把this設(shè)置為當(dāng)前實(shí)例對象
  • 執(zhí)行內(nèi)部代碼,設(shè)置實(shí)例對象屬性和方法
  • 返回新創(chuàng)建的實(shí)例對象
    function stu() {
      //這里沒有返回值
      this.say = function () {
        console.log(this.say);//this就代指stu實(shí)例
      }
    }

    var aaa = new stu();
    console.log(aaa);//打印stu谍婉,證明new的確把對象返回了
    aaa.say();

對象的字面量

    var obj = new Object();
    console.log(obj);

    var student = {
      object:obj,
      name:"小明",
      age:19,address:"北京",
      say:function () {
      console.log(this.name + "說大家好我來自" + this.address);
    }};//對象字面量創(chuàng)建舒憾,類似字典形式,key可以帶""也可以不帶穗熬,不單單可以添加基本類型镀迂,也可以添加自定義類型,或者函數(shù)
    console.log(student.age) ;
    student.say();
    console.log(typeof student.object);

json

json和對象的區(qū)別在于json的key必須加""

    var  json = {
      "name":"張三",
      "age":12,
      "address":"香港"
    }

    //for in遍歷json
    for (var  key in json){
      console.log(json[key]);
    }

數(shù)組

var arr = new Array();//通過創(chuàng)建對象的方式創(chuàng)建數(shù)組
var arr2 = new Array(3);//這里的三被識別成長度唤蔗,里面值默認(rèn)成undefined
var arr3 = new Array(1,2,3);
var arr4 = [1,2,3];//直接創(chuàng)建數(shù)組探遵,字面量
var arr[0] = 123;//數(shù)組賦值
var arr[2] = 234;//數(shù)組創(chuàng)建出來之后如果沒賦值都是undefined,而且可以不按照順序賦值,所以arr[1]就是undefined妓柜。

遍歷

var arr1 = [];
alert(arr1.length);//當(dāng)數(shù)組創(chuàng)建出來的時候length可以訪問箱季,輸出是0
//數(shù)組遍歷
var arr = ["1","2","3","4","5"];
for (var i = 0; i < arr.length;i++){
  console.log(arr[i]);
}

//把1-100之間所有的奇數(shù)放到數(shù)組中
//數(shù)組長度本身開始是0,每添加進(jìn)去一個值棍掐,數(shù)組長度自增藏雏,所以可以用length替代
var arr = [];
for (var i = 1;i <= 100;i++){
    if(i % 2){
        arr[arr.length] = i;
    }
 }
console.log(arr);

數(shù)組中常見的api

棧操作,有返回值

    console.log(arr.push(1));//再最后面添加作煌,相當(dāng)于add
    console.log(arr);
    console.log(arr.pop());//刪除最后一個元素
    console.log(arr);

隊(duì)列操作掘殴,有返回值

    console.log(arr.shift());//刪除第一個元素
    console.log(arr);
    console.log(arr.unshift(1));//再最前面插入元素
    console.log(arr);

反轉(zhuǎn)數(shù)組

    var arr = ["e","d","c","b","a"];
    console.log(arr.reverse());//反轉(zhuǎn)數(shù)組,返回翻轉(zhuǎn)的數(shù)組,原數(shù)組也變了
    console.log(arr);

排序:按照ASCII碼表排列的粟誓,如果自定義排序方案杯巨,傳入回調(diào)函數(shù)

    var arr1 = [1,3,5,7,9,2,4,6,8,10];
    console.log(arr.sort());//能排字符串
    console.log(arr1.sort());//只能通過第一位進(jìn)行排列,1努酸,10服爷,2,3获诈,4...
    console.log(arr1.sort(function (a,b) {
      return a - b;//升序排列
    }));//sort參數(shù)傳回調(diào)函數(shù)仍源,設(shè)定排序規(guī)則

拼接

    var arr1 = [1,2,3];
    var arr2 = [4,5];
    var arr3 = arr1.concat(arr2);
    console.log(arr1);
    console.log(arr2);
    console.log(arr3);//原數(shù)組都沒變,生成拼接數(shù)組

截取

    console.log(arr3.slice(2));//一個參數(shù)從索引值第二個截取到最后
    console.log(arr3.slice(-2));//截取最后兩個
    console.log(arr3.slice(2,4))//從索引第二個到第四個
    console.log(arr3.slice(4,2))//當(dāng)前一個索引值大于后一個的時候舔涎,截取出來一個空數(shù)組

截取能操作原數(shù)組(替換)

console.log(arr3.splice(2));//一個參數(shù)從索引值截取到最后
console.log(arr3.splice(1,2));//兩個參數(shù)笼踩,第一個索引值,第二個截取長度   
console.log(arr3.splice(1,2,"122","222","22222"));//三個參數(shù)亡嫌,第一個索引嚎于,第二個截取的長度掘而,第三個以后的再原數(shù)組被截取的地方插入這些元素
console.log(arr3);//[1,"122","222","22222",4,5];

給元素查索引

    var arr = [1,2,3,4,1,2,3,4];
    console.log(arr.indexOf(1));//從前往后查到索引立即返回,返回0
    console.log(arr.lastIndexOf(1))//從后往前查索引立即返回于购,返回4

every

    var arr = [1,2,3,4,5,6,7,8,9];
    var bool = arr.every(function (item,index,array) {

      //還可以修改元素

      if (index === 2){
        array[index] = "二";
      }
      console.log(item);
      console.log(index);
      console.log(array);
      return true;
    });//every,返回值bool,參數(shù)是回調(diào)函數(shù)袍睡,對數(shù)組總的每一個元素執(zhí)行回調(diào)函數(shù),逐項(xiàng)遍歷肋僧,如果每一項(xiàng)返回true那個every函數(shù)返回true斑胜,只要有一項(xiàng)不是true,停止遍歷嫌吠,返回false
    console.log(bool);

過濾

     var arr = [1,2,3,4,5,6,7,8,9];
    var newArray = arr.filter(function (item,index,array) {
      return item > 3 ? true : false;
    });//filter,返回的是一個數(shù)組止潘,參數(shù)是回調(diào)函數(shù),定義規(guī)則辫诅,返回的數(shù)組是回調(diào)函數(shù)返回true的項(xiàng)組成的數(shù)組
    console.log(newArray);

純遍歷

     var arr = [1,2,3,4,5,6,7,8,9];
    var aaa = "呵呵呵";
    arr.forEach(function (item,index,array) {
       aaa += item;
    });//forEach沒有返回值凭戴,操作數(shù)組,
    console.log(aaa);

映射

     var arr = [1,2,3,4,5,6,7,8,9];
    var newArray = arr.map(function (item,index,array) {
      return item += "map";
    });//映射出新數(shù)組
    console.log(newArray);

some

     var arr = [1,2,3,4,5,6,7,8,9];
    var bool = arr.some(function (item,index,array) {
      if (index === 1){
        return true;
      }
      return false;
    });//只要一個元素返回的是ture炕矮,some返回ture
    console.log(bool);//返回true

清空

    //第一種
    var arr = [1,2,3,4,5,6];
    arr.splice(0);
    console.log(arr);

    //第二種length可寫
    arr.length = 0;
    console.log(arr);

    //第三種
    arr = [];
    console.log(arr);

String

簡單數(shù)據(jù)類型和對象數(shù)據(jù)類型


    //簡單數(shù)據(jù)類型無法綁定屬性和方法
    var aaa = "abc";
    aaa.asd = "123";
    console.log(aaa.asd);
    console.log(aaa.length);//當(dāng)調(diào)用這個方法的時候簇宽,底層做了數(shù)據(jù)類型轉(zhuǎn)換,把簡單類型變成對象類型吧享,再調(diào)用length屬性
    console.log(aaa.indexOf("c"));//

    //對象類型
    var str = new String("abc");
    str.qwe = "1234";
    console.log(str.qwe);

給索引查字符

    var str1 = new String("abcd");
    console.log(str1.charAt(0));
    console.log(str1.charAt(1));
    console.log(str1.charAt(2));
    console.log(str1.charAt(3));
    console.log(str1.charCodeAt(0));//返回ASCII碼值

給字符查索引

    var str2 = new String("abcdefg我是");
    console.log(str2.indexOf("bc",0));//從前往后查找第一個符合元素的位置,第二個參數(shù)是從哪個位置開始查,返回的如果是-1譬嚣,代表沒有查到
    console.log(str2.lastIndexOf("bc",0));//從后往前查钢颂,

拼接

    var str3 = "1234".concat("123");
    console.log(str3);

截取

     var str3 = "1234567";
    //slice
    var str4 = str3.slice(2,3);//從索引開始截取,到索引結(jié)束拜银,一個參數(shù)就是一直截到最后
    console.log(str3.slice(-3));//從倒數(shù)第幾個截到最后
    console.log(str3.slice(5,2));//前大后小殊鞭,截的是空字符串
    console.log(str4);

    //substr
    var str5 = str3.substr(2,3);//從索引開始截取,第二個參數(shù)是長度
    console.log(str5);
    console.log(str3.substr(-3));//從倒數(shù)第幾個截到最后

    //substring(跟slice差不多尼桶,但是更智能一些)
    var str6 = str3.substring(2,3);//從索引開始截取操灿,到索引結(jié)束,一個參數(shù)就是一直截到最后
    console.log(str6);
    console.log(str3.substr(-3));//負(fù)值的話截取的是所有的字符串
    console.log(str3.slice(5,2));//前大后小泵督,智能調(diào)換

大小寫轉(zhuǎn)換

    var str10 = "ABC";
    console.log(str10.toLowerCase());//轉(zhuǎn)成小寫
    console.log(str10.toLowerCase().toUpperCase());//轉(zhuǎn)成大寫

其他方法

    var str7 = "   1 2 3 4    ";
    console.log(str7.trim());//去除前后空格趾盐,中間空格去除不掉

    var str8 = "1234512345";
    console.log(str8.replace(/1/g,"234"));//把什么替換成什么,前面是正則

    var str9 = "123456789";
    console.log(str9.split(""));//把字符串變成數(shù)組,用參數(shù)切

URI

    //uri小腊,數(shù)據(jù)傳遞的時候經(jīng)常需要編碼后再進(jìn)行傳遞
    var url = "https://www.baidu.com?username='aaa'&password='123456'";
    console.log(encodeURIComponent(url));//編譯
    console.log(decodeURIComponent(encodeURIComponent(url)));//反編譯
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末救鲤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秩冈,更是在濱河造成了極大的恐慌本缠,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件入问,死亡現(xiàn)場離奇詭異丹锹,居然都是意外死亡稀颁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門楣黍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匾灶,“玉大人,你說我怎么就攤上這事锡凝≌匙颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵窜锯,是天一觀的道長张肾。 經(jīng)常有香客問我,道長锚扎,這世上最難降的妖魔是什么吞瞪? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮驾孔,結(jié)果婚禮上芍秆,老公的妹妹穿的比我還像新娘。我一直安慰自己翠勉,他們只是感情好妖啥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著对碌,像睡著了一般荆虱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朽们,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天怀读,我揣著相機(jī)與錄音,去河邊找鬼骑脱。 笑死菜枷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叁丧。 我是一名探鬼主播啤誊,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拥娄!你這毒婦竟也來了坷衍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤条舔,失蹤者是張志新(化名)和其女友劉穎枫耳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孟抗,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迁杨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年钻心,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铅协。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡捷沸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狐史,到底是詐尸還是另有隱情痒给,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布骏全,位于F島的核電站苍柏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏姜贡。R本人自食惡果不足惜试吁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望楼咳。 院中可真熱鬧熄捍,春花似錦、人聲如沸母怜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苹熏。三九已至碟贾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柜裸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工粱锐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疙挺,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓怜浅,卻偏偏與公主長得像铐然,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子恶座,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理搀暑,服務(wù)發(fā)現(xiàn),斷路器跨琳,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,216評論 0 4
  • 昨天準(zhǔn)備就現(xiàn)在開發(fā)中的問題寫一個Maven插件自点,完成一些代碼的自動生成。在好幾年前寫過幾個插件脉让,這次重新找開看后桂敛,...
    jackzh閱讀 3,947評論 0 6
  • 小時候我們的城市像郊外功炮,我們的腳步很輕快,那時天空很藍(lán)心很小路很寬术唬,長大后我們的存在像塵埃薪伏,我們的距離被拉開。 b...
    會回憶的魚閱讀 192評論 0 1
  • 2015年7月16日 莫高窟 對我而言粗仓,今天是整個行程中的最高潮嫁怀。自從幾年前讀完余秋雨的《文化苦旅》,莫高窟的劫難...
    模模的世界閱讀 299評論 0 0