10、流程式控制制語句 註:var obj = {};這裡的obj轉換boolean語句為true if語句和java是一樣的,判斷條件也是根據上篇博客提到的假性值 // 彈出一個帶輸入框的視窗 var value = prompt("請輸入。。。"); //輸入1 if(value=="1"){ al ...
10、流程式控制制語句
註:var obj = {};這裡的obj轉換boolean語句為true if語句和java是一樣的,判斷條件也是根據上篇博客提到的假性值
// 彈出一個帶輸入框的視窗 var value = prompt("請輸入。。。"); //輸入1 if(value=="1"){ alert("true"); //彈框 var inner = 1; } else{ alert("flase"); var inner = 2; } // 列印輸出流程語句的變數 console.log(inner); //1switch條件需要和case匹配值和類型都要相同,另外switch的判斷條件可以是String 、Number、Boolean、char、枚舉、null、undefined
var value = prompt("請輸入。。。"); //輸入1 // value的值這裡是字元串1,他不能和數字1匹配 // value的值和類型與case後的值和類型必須相等,才能匹配 value = +value; //轉換數值類型 switch(value){ case 1: console.log("yi"); break; //case的值類型可以為函數 case (function(){return 2;})(): console.log("er"); break; case 3: console.log("san"); break; case 4: console.log("si"); break; default: alert("沒有匹配值") }for迴圈、while迴圈、do···while迴圈和Java的一模一樣,但是js裡面的變數外部也可以使用。 for···in迴圈對象:
obj = { "name": "xiaohu", "age":20, "gender": "male", a: "sa" } console.log(obj.name); //xiaohu console.log(obj.a); //sa for(key in obj){ console.log(key+"------"+obj[key]); //name------xiaohu,依次輸出 }
11、小技巧: ①var d = new Date().getDate(); ----->d是一個number類型,Sunday=0, Monday=1, Tuesday=2,······ 12、創建對象: 1)使用構造函數創建對象並賦值如: var obj = new Object(); obj.name = "張三"; obj["age"] = 21; obj.sayHi = function(){}; 2)使用字面量創建對象如: var obj = { name: "張三", age: 21, sayHi: function(){}, } 13、訪問對象的屬性和方法: 1)通過 對象名.屬性名 來訪問如: console.log(obj.name); //張三 console.log(obj.age); //21 console.log(obj.sayHi); //這裡並沒有執行函數,若執行,在其後添加括弧 2)通過 對象名["屬性名"] 來訪問,也可以自動添加屬性名和屬性值如: console.log(obj["name"]); //張三 console.log(obj["age"]); //21 console.log(obj["sayHi"]); //這裡並沒有執行函數,若執行,在其後添加括弧 obj["gender"] = "男"; console.log(obj["gender"]); //男 3)獲取對象的屬性和值如: for(var key in obj){ //註:這裡就不能使用 . 來訪問了,若用點訪問,則返回的結果可能是undefined或者是obj對象的key屬性名對應的值。 console.log(key,"-----",obj[key]); } 14、刪除對象的屬性名及它的值: delete obj.age; 或者 delete obj["age"]; 15、對象序列化和反序列化: 序列化JSON.stringify(obj):將js對象數據轉換為字元串 console.log(JSON.stringify(obj)); 反序列化JSON.parse(str): 將字元串轉換技術對象數據 var str = JSON.stringify(obj); console.log(JSON.parse(str)); 16、每一個構造函數都有一個原型對象,實例可以調用對應的構造函數中的原型對象的屬性和方法 console.log(Object.prototype); //{} console.log(Object.prototype.constructor === Object); //true var obj = {name: "張三"}; console.log(obj.toString()); //[object Object] console.log(obj.toString === Object.prototype.toString); //true console.log(obj.constructor); //[Function: object] 1)in 是判斷是自有屬性或者繼承屬性 console.log('name' in obj); //true console.log(toString' in obj); //true console.log('aaa' in obj); //false 2)hasOwnProperty() 判斷是不是自有屬性 如果重寫了,也算是自有屬性 console.log(obj.hasOwnProperty("name")); //true console.log(obj.hasOwnProperty("aaa")); //false 3)propertyIsEnumerable() 判斷是不是自有屬性並且可枚舉 console.log(obj.propertyIsEnumerable("name")); //true console.log(obj.propertyIsEnumerable("toString ")); //false 4)isPrototypeOf()判斷 Object.prototype是不是obj的原型對象 console.log(Object.prototype.isPrototypeOf(obj)); //true 17、函數: 1)函數聲明: ----> function 函數名(){ 函數體 return; //沒有return返回值,預設是undefined } -----> var 函數名 = function (){ 函數體 return; } 它們的功能和Java的很相似 第二種是一個匿名函數(英文簡稱 IIFE)是一種立即執行的函數 匿名函數的使用如: function(){ console.log("匿名函數"); } 執行這個函數的時候就在大括弧後面添加() 2)函數聲明提升和變數名聲明提升如: console.log(one); //undefined function one(){ console.log("列印函數"); } var one = 123; console.log(one); //123 這種情況是變數聲明在前,函數聲明在後,函數聲明再覆蓋,最後變數再賦值 18、arguments 里存放實參列表,類數組對象,length屬性代表存放實參個數,callee屬性代表函數 function add(){ var total = 0; for(var i = 0; i < arguments.length; i++){ //argument = {0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7} total += arguments[i]; } return total; } var result = add(1,2,3,4,5,6,7); console.log(result); //28 function test(num){ console.log(arguments.callee); //[Function: test] if(num == 1) return 1; else return num*arguments.callee(num-1); //argument的callee屬性指向的是當前函數名,可用於遞歸,防止函數名重新賦值 } console.log(test(5)); //120 19、this指向當前函數的作用域( 指向的是函數賴以執行的環境對象) function test(){ console.log(this); //返回 globa l對象 } 在nodeJS環境中返回的是global對象, 在瀏覽器環境中返回的是window對象 test(); var obj = { name:'zhangsan', age: 21, gender: 'male', sayHi: function(){ console.log(this); //就會返回{name:'zhangsan', age:21, gender: 'male', sayHi: [Function],} } } obj.sayHi(); function createObj(naem, age, gender){ this.name = name; this.age = age; this.gender = gender; } var obj = new createObj("zhangsan", 22, "nan") console.log(obj); //返回的是一個對象