JavaScript 內建的型別主要可以分成基本型別 (Primitives) 與物件型別 (Object) 兩大類。
基本型別又分成 string、number、boolean、null、undefined 幾種,
除了以上幾種之外,其他都可以歸類至物件型別 (Object)
除了以上幾種之外,其他都可以歸類至物件型別 (Object)
一.物件的定義 - Object :
「An object is a collection of properties and has a single prototype object.」
一個物件可以是個零至多種屬性的集合,而屬性是鍵 (key) 與值 (value) 之間的關聯。 一個屬性的「值」可以是某個基本型別,也可以是另一個物件,甚至可以是一個函數。
物件可以是瀏覽器預先定義好的,當然也可以是由自己定義物件的屬性與內容
物件可以是瀏覽器預先定義好的,當然也可以是由自己定義物件的屬性與內容
1>Object 的宣告方式:
var person={} //或是 var person=new Object();
person["NAME"]="蔡聰進";
person["GENDER"]="male";
2>Array的宣告方式:
var tempData=[];
tempData.push(rec);
1>建立 Object 的2種方法如下:
方法1> new Object() 方式,建立物件 , 再設定物件屬性
var person = new Object();
person.name = 'Kuro';
person.job = 'Front-end developer';
person.sayName = function() { alert( this.name ); };
方法2> JSON 方式 , 建立物件
var person = { name: 'Kuro',
job: 'Front-end developer',
sayName: function() { alert( this.name ); }
};
-->
直接用大括號
這種建立物件的方式稱為「物件實字 (Object literal)」,同時也是
{ }
,即可建立起一個新的物件,並且在建立物件的同時直接指定屬性至該物件內。這種建立物件的方式稱為「物件實字 (Object literal)」,同時也是
JSON
格式的核心語法。二.屬性的存取 , 建議用 Object["Name"]
存取屬性 的2種方法如下:
var person = { name: 'Kuro',
job: 'Front-end developer',
sayName: function() { alert( this.name ); } ,
"001" : "Hello",
};
1>由.Name存取
person.name; // 'Kuro'
person.sayName(); // ƒ sayName()
person.001; // SyntaxError: Unexpected number
2>由 [Name]存取
person["name"]; // 'Kuro'
person["name"]; // 'Kuro'
person["sayName"]; // ƒ sayName()
person["001"] // Hello
--> 屬性的新增及刪除
person["age"]=50;console.log("person[age]]",person["age"]); //50
delete person["age"];
console.log("person[age]]",person["age"]); //undefined
--> 判斷屬性是否存在
方法1: ==undefined
if (person["age"]!=undefined){
console.log("property age exist");
}
方法2: (age in person) , true/false
if (age in person){
console.log("property age exist");
}
if (person.hasOwnProperty('age')) {
console.log("property age exist");
}
-->
if (person["name"]!="undefined"){
console.log("1 property name exist");
};
if ("name" in person){
console.log("2 property name exist");
};
if (person.hasOwnProperty('name')) {
console.log("3 property name exist");
};
三.型別的判斷 - typeof -
typeof
運算子回傳的東西都是「字串」typeof true; // 'boolean'
typeof 'Kuro'; // 'string'
typeof 123; // 'number'
typeof NaN; // 'number'
typeof { }; // 'object'
typeof [ ]; // 'object' Array
typeof undefined; // 'undefined'
typeof window.alert; // 'function'
typeof null; // 'object'
--> typeof Array --> 得到 "object" , 非 array
由 Array.isarray([]) 判斷 //true
Array.isarray( [4,"a","b","c"] ); //true
Array.isarray("abc"); //false
四.== === 比較
var a = 10; var b = "10";
console.log( a == b ); // true
console.log( a === b ); // false
console.log(null == undefined) ; //true
console.log(null === undefined) ; //false
-->
在 JavaScript 這門程式語言中,大家會提倡盡量使用 === 來取代 == 的原因。-->
!=
的版本會做自動轉型,而 !==
則不會做自動轉型。