javascript笔记(JavaScript_Core电子书)-JavaScript基础

/**

 * 基本数据类型

 * js指包含五种数据类型:字符串、数字、布尔、NULL对象、undefined

 */

var str = "Hello JavaScript";

var num1 = 12;

var num2 = 1.4;

var bool = true;

var nullType = null;

var undef;

 

alert(typeof str);

alert(typeof num1);

alert(typeof num2);

alert(typeof bool);

alert(nullType);

alert(typeof undef);

 

/**

 * js中的对象包括基本数据类型、new出来的对象类型、数组、函数

 */

var obj1 = new Object();

obj1.strAttr = str;  //属性也是一个对象

obj1.numAttr = num1;

 

var array1 = new Array("1","2","3");

var func1 = function(){alert("function Obj")};

alert(typeof obj1);

alert(typeof array1);

alert(typeof func1);

 

/**

 * js的自动装箱和拆箱

 */

var strObject = new String("Hello JavaScript"); //字符串对象

alert(typeof strObject);

alert(str.length);  //字符串类型自动装箱成字符串对象,拥有length属性

 

 

/**

* js弱类型机制

*/

//js是解释型语言,某对象的具体类型是根据上下文来确定的

var weakT1 = 2+"1";  //"21"

var weekT2 = 2+4;    //6

//在布尔的上下文中,如果某对象不为空(null或undefind)则为true,否则为false

var boolT3;

if(boolT3.item){

alert("boolT3.item not null");

}else{

boolT3.item = new String("item");

}

//可以使用typeof和instanceof来判断对象的具体类型和实例

function showMessage(message,handle){ //此处handle参数为一个函数

if(typeof handle == "function"){

handle(message);

}else{

throw new Error("second param should be a function");

}

}

//当对象为数组时typeof返回是Object,此时可用instanceof来区分(返回是Array)

 

 

/**

* js基本数据类型和引用数据类型区别

*/

var x = 2;

var y = x; //此处赋的是值而非x对象引用,所以y指向内存中某一固定地址

alert(x+"***"+y);

x = 3;   //x改变不影响y

alert(x+"***"+y);

 

var intArray = new Array(1,2,3,4); //js的数组可变长度

var arrayRef = intArray; //此处赋的是对象引用(内存地址),所以arrayRef与intArray指向同一内存地址

intArray.push(5);

alert(arrayRef.toString());

 

 

/**

 * js运算符

 */

//[]:主要用于数组和访问对象属性

var arrayTe = ["A","B","C"];

alert(arrayTe[0]);

//访问一个对象的属性和方法

var objectTe = {

itemF : "item",

itemM : function(){

alert(this.itemF);

}

};

alert(objectTe[itemF]); //对对象属性的访问使用[]最好,防止属性名中包含.的情况

//如不知某对象的属性和方法,可使用以下方法迭代得到

for(var key in objectTe){

alert(key+":"+objectTe[key]);

}

 

//==或!= 和===或!==

//==相等:2个对象类型相同时,比较值/对象地址

//       对象类型不同时,null和undefined相等、字符串转为数字再与数字相比较、其中一个为true,转为1(false转为0)再比较、

//          其中一个是对象,一个是字符串/数字,先把对象转为原始值(toString或valueOf函数)再比较、其他返回false

//===等同于:2个对象类型不相同返回false;两个对象类型相同时,比较值或对象地址

var eqObj1 = {

eqFeild:"eqObj1Feild",

toString:function(){  //重写toString函数

return this.eqFeild;

}

};

var eqObj2 = "eqObj1Feild";

alert(eqObj1==eqObj2);  //true

alert(eqObj1===eqObj2);  //false

alert(1==true);  //true

//建议使用等同来比较

 

// || 用于赋值时(前面为非空则取前面,否则取后面的值)

function Note(name,title){

this.name = name || "死亡笔记";

this.title = title || "Death Note";

this.getName = function() {return this.name};

this.getTitle = function() {return this.title};

}

 

var n = new Note(null,"L");

alert(n.getName());

alert(n.getTitle());

你可能感兴趣的:(javascript笔记)