Javascript 中的所有事物都是對象:字符串、數值、數組、函數… 此外,JavaScript 允許自定義對象。
所有事物都是對象。 JavaScript 提供多個內建對象,比如 String、Date、Array 等等。 對象只是帶有屬性和方法的特殊數據類型。 ● 布爾型可以是一個對象。 ● 數字型可以是一個對象。 ● 字符串也可以是一個對象 ● 日期是一個對象 ● 數學和正則表達式也是對象 ● 數組是一個對象 ● 甚至函數也可以是對象
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><script>//對象只是一種特殊的數據。對象擁有屬性和方法。person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"} //對象(有鍵值)document.write(person.firstname + " is " + person.age + " years old.");document.write("<br>"); //JavaScript for...in 語句循環遍歷對象的屬性。for(a in person){//a為對象的鍵值,person為對象 document.write(a+"=="+person[a]+" ");//person[a]為對象的屬性}document.write("<br>"); //////////////////////////var message="Hello World!"; var x=message.length;document.write(x);//訪問對象屬性document.write("<br>"); //////////////////////////var message="Hello world!";var y=message.toUpperCase();document.write(y);//訪問對象方法document.write("<br>"); /////////////////////////var myCars=["Saab","Volvo","BMW"]; //數組(有下標)for(b in myCars){//b為數組下標 document.write(b+"=="+myCars[b]+" ");//myCars[b]:數組元素}</script></body></html>結果:
結果:John is 50 years old.firstname==John lastname==Doe age==50 eyecolor==blue 12HELLO WORLD!0==Saab 1==Volvo 2==BMWangular有自己的生命周期。循環給一個 angular監聽的變量復值時。最好還是用angular自帶的循環方法:“angular.foreach”
1.針對對象循環(key,value)
var values = {name: 'misko', gender: 'male'};var log = [];angular.forEach(values, function(value, key) { this.push(key + ': ' + value);}, log);expect(log).toEqual(['name: misko', 'gender: male']);2.針對對象數組:指定開始遍歷
var objs =[{a:1},{a:2}];angular.forEach(objs,function(data,index,array){//data等價于array[index]console.log(data.a+'='+array[index].a);});參數如下: objs:需要遍歷的集合 data:遍歷時當前的數據 index:遍歷時當前開始索引 array:需要遍歷的集合,每次遍歷時都會把objs原樣的傳一次。
3.針對對象數組:遍歷全部
var objs =[{a:1},{a:2}];angular.forEach(objs, function(data){//data等價于array[index]console.log(data.a);});4.針對對象數組:遍歷
var list = [ {id: 1, title: "博客園", url: "http://www.cnblogs.com"}, {id: 2, title: "知乎", url: "http://www.zhihu.com"}, {id: 3, title: "code三、區別對象與數組的使用:例子一:
<!doctype html><html ng-app="a6_3"><head> <title>使用factory方法自定義服務</title> <script src="../Script/angular.min.js" type="text/javascript"></script> <style type="text/CSS"> body { font-size: 12px; } .show { background-color: #ccc; padding: 8px; width: 260px; margin: 10px 0px; } </style></head><body> <div ng-controller="c6_3"> <div class="show">{{str('我是服務返回的內容')}}</div> <div class="show">{{name(1)}}</div> </div> <script type="text/javascript"> angular.module('a6_3', []) .factory('$outfun', function () { return { str: function (s) { return s; } }; }) .factory('$outarr', function () { return ['張三', '李四', '王二'] }) .controller('c6_3', function ($scope, $outfun, $outarr) { $scope.str = function (n) { return $outfun.str(n);//$outfun為對象,$outfun.str為根據鍵獲取對象的值,n為方法參數 } $scope.name = function (n) { //$outarr為數組,n為下標 } }); </script></body></html>例子二:
<!doctype html><html ng-app="a6_2"><head> <title>使用$provide自定義服務</title> <script src="../Script/angular.min.js" type="text/javascript"></script> <style type="text/css"> body { font-size: 12px; } .show { background-color: #ccc; padding: 8px; width: 260px; margin: 10px 0px; } </style></head><body><div ng-controller="c6_2"> <div class="show"> 服務返回的值: <span>{{info('name')}}</span> <span>{{info('sex')}}</span> <span>{{info('score')}}</span> </div></div><script type="text/javascript"> angular.module('a6_2', [], function ($provide) {/*內置服務$provide*/ $provide.factory('$output', function () { var stu = { name: '張三', sex: '男', score: '60' }; return stu; }) }) .controller('c6_2', function ($scope, $output) { $scope.info = function (n) { for (_n in $output) { /*JavaScript for...in 語句循環遍歷對象的屬性。*/ if (_n == n) {/*對象的鍵*/ return ($output[_n]); /*通過對象的鍵獲取對象的值*/ } } } });</script></body></html>JavaScript中數組slice和splice的對比:
1、slice slice是指定在一個數組中的元素創建一個新的數組,即原數組不會變。 定義和用法 slice() 方法可提取字符串的某個部分,并以新的字符串返回被提取的部分。 語法
stringObject.slice(start,end);//提取包括start不包括end的新的數據,//不改變原有//返回提取的數據參數 描述 start 要抽取的片斷的起始下標。如果是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數第二個字符,以此類推。 end 緊接著要抽取的片段的結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字符串結尾的字符串。如果該參數是負數,那么它規定的是從字符串的尾部開始算起的位置。
返回值 一個新的字符串。包括字符串 stringObject 從 start 開始(包括 start)到 end 結束(不包括 end)為止的所有字符。
說明 String 對象的方法 slice()、substring() 和 substr() (不建議使用)都可返回字符串的指定部分。slice() 比 substring() 要靈活一些,因為它允許使用負數作為參數。slice() 與 substr() 有所不同,因為它用兩個字符的位置來指定子串,而 substr() 則用字符位置和長度來指定子串。 還要注意的是,String.slice() 與 Array.slice() 相似。
數組的 slice (ECMAScript 5.1 標準 15.4.4.10 節)非常類似于字符串的 slice。根據規范,slice 需要兩個參數,起點和終點。它會返回一個包含了從起點開始,到終點之前之間所有元素的新數組。(包含起點,不包含終點)
'abc'.slice(1,2) // "b" //截取[14, 3, 77].slice(1, 2) // [3]var x = [14, 3, 77];var y = x.slice(1, 2);console.log(x); // [14, 3, 77] //不改變原有console.log(y); // [3] //返回截取的數據//如果不傳入參數二end,那么將從參數一的索引位置開始截取,//一直到數組尾var a=[1,2,3,4,5,6];var b=a.slice(0,3); //[1,2,3]var c=a.slice(3); //[4,5,6]//如果兩個參數中的任何一個是負數,array.length會和它們相加,//試圖讓它們成為非負數,舉例說明://當只傳入一個參數,且是負數時,length會與參數相加,然后再截取var a=[1,2,3,4,5,6];var b=a.slice(-1); //[6]//當只傳入一個參數,是負數時,并且參數的絕對值大于等于數組length時,會截取整個數組var a=[1,2,3,4,5,6];var b=a.slice(-6); //[1,2,3,4,5,6]var c=a.slice(-8); //[1,2,3,4,5,6]//當傳入兩個參數一正一負時,length也會先于負數相加后,再截取var a=[1,2,3,4,5,6];var b=a.slice(2,-3); //[3]//當傳入一個參數,大于等于length時,將返回一個空數組var a=[1,2,3,4,5,6];var b=a.slice(6); //[]var a="i am a boy";var b=a.slice(0,6); //"i am a"2、splice 定義和用法 splice() 方法用于插入、刪除或替換數組的元素。 語法
arrayObject.splice(index,howmany,element1,.....,elementX)//從index開始,刪除howmany個元素,插入element1...等元素。//改變原有數據。//返回刪除的數據。參數 描述 index 必需。規定從何處添加/刪除元素。 該參數是開始插入和(或)刪除的數組元素的下標,必須是數字。 howmany 必需。規定應該刪除多少元素。必須是數字,但可以是 “0”。 如果未規定此參數,則刪除從 index 開始到原數組結尾的所有元素。 element1 可選。規定要添加到數組的新元素。從 index 所指的下標處開始插入。 elementX 可選??上驍到M添加若干元素。 返回值 如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數組。
說明 splice() 方法可刪除從 index 處開始的零個或多個元素,并且用參數列表中聲明的一個或多個值來替換那些被刪除的元素。
提示和注釋 注釋:請注意,splice() 方法與 slice() 方法的作用是不同的,splice() 方法會直接對數組進行修改。
splice是JS中數組功能最強大的方法,它能夠實現對數組元素的刪除、插入、替換操作,返回值為被操作的值。 splice刪除:color.splice(1,2) (刪除color中的1、2兩項); splice插入:color.splice(1,0,’brown’,’pink’) (在color鍵值為1的元素前插入兩個值); splice替換:color.splice(1,2,’brown’,’pink’) (在color中替換1、2元素); 雖然 splice(15.4.4.12 節)也需要(至少)兩個參數,但它的意義則完全不同。splice 還會改變原數組。
[14, 3, 77].slice(1, 2) //提?。簭膇ndex1開始截取到index2結束,返回截取的數據: [3][14, 3, 77].splice(1, 2) //替換:從index1開始,刪除2個元素、未添加元素,結果返回新數據: [3, 77]var x = [14, 3, 77]var y = x.splice(1, 2)console.log(x) // [14]//改變原有console.log(y) // [3, 77]//返回被刪除var a=['a','b','c'];var b=a.splice(1,1,'e','f'); //a=['a','e','f','c'],//改變原有數據//b=['b']//返回被刪除的數據新聞熱點
疑難解答