(觉得自己一直思考太少且深度不够,所以加上这个前缀提醒自己-思维才是核心竞争力。)
一、javascript之面向对象,读书笔记加上自己的一些思考。javascript的对象分为两种,一种表示的是已命名的值的无需集合;另一种表示的是有编号的值的有序结合即array。
引用类型是一种数据结构,用来将数据与功能组成在一起。
有必要解释一下javascript中的对象:即一些”名-值“对(named values)所组成的集合。需要注意的是name只能是string类型,而value类型不限。
[b]object[/b]:已命名的数据集合
[b]创建方式[/b]有两种,第一种构造函数创建:
第二种object literals创建:(用来简化属性的赋值过程)
需要注意的有三点:1.属性名与值之间用colon连接;2.最后一个属性后没有semicolon; 3.close brace后有semicolon,仅仅是句子结束后的sign而已。
用literals传参数:
对object literals的理解,其实并没有所谓的对象,仅仅是把”named values“结合在了一起而已。
[b]array[/b],[b]data[/b],[b]number[/b],[b]boolean[/b],[b]string[/b]类型很容易,不再赘述;[b]regexp[/b]是no essential的,用时再看。
注意的是:delete操作符用以删除对象中的某个属性,
in操作符用以判断某个属性是否存在并可以使用
[b]function[/b]:函数实际上是对象,每个函数都是functin类型的实例,于其他引用类型一样具有属性和方法,因此函数名实际上是一个指向函数对象的指针.
创建方式:
注意function declare是解析器首先读取的,而function expression是在执行到它时才会读取的。function内部有两个特殊的对象arguments和this,arguments是一个类数组对象,保存着传入function的所有参数,arguments还有一个callee属性,指向拥有这个arguments对象的函数;this代表函数在执行时所处的环境对象;而function自己作为一个对象,也有属性和方法。每个function都有两个属性length和prototype,两个方法apply和call。
length:代表的是所传参数的个数;
prototype:通过对象实例访问的区域,相当于静态变量;
apply和call:在特定的作用域中调用函数,注意第一个参数是作用域;
一、javascript之面向对象,读书笔记加上自己的一些思考。javascript的对象分为两种,一种表示的是已命名的值的无需集合;另一种表示的是有编号的值的有序结合即array。
引用类型是一种数据结构,用来将数据与功能组成在一起。
有必要解释一下javascript中的对象:即一些”名-值“对(named values)所组成的集合。需要注意的是name只能是string类型,而value类型不限。
[b]object[/b]:已命名的数据集合
[b]创建方式[/b]有两种,第一种构造函数创建:
var person =new object();person.name ="yancy";person.sex ="man";person.age =25;
第二种object literals创建:(用来简化属性的赋值过程)
var person = { name : "yancy"; sex : "man"; age : 25};
需要注意的有三点:1.属性名与值之间用colon连接;2.最后一个属性后没有semicolon; 3.close brace后有semicolon,仅仅是句子结束后的sign而已。
用literals传参数:
function displayinfo(args){ var output =""; if(typeof args.name ==“string”){ output +="name:"+args.name+"\n"; } if(typeof args.sex==“string”){ output +="sex:"+args.sex+"\n"; } if(typeof args.age =="number"){ output +="age:" +args.age +"\n" } alert(output);}displayinfo({ name : "yancy"; sex : "man"; age : 25});displayinfo({ name : "shane"});
对object literals的理解,其实并没有所谓的对象,仅仅是把”named values“结合在了一起而已。
[b]array[/b],[b]data[/b],[b]number[/b],[b]boolean[/b],[b]string[/b]类型很容易,不再赘述;[b]regexp[/b]是no essential的,用时再看。
注意的是:delete操作符用以删除对象中的某个属性,
in操作符用以判断某个属性是否存在并可以使用
[b]function[/b]:函数实际上是对象,每个函数都是functin类型的实例,于其他引用类型一样具有属性和方法,因此函数名实际上是一个指向函数对象的指针.
创建方式:
//function declarefunction sum(num1,num2){ return num1 +num2;}//function expressionvar sum =function (num1,num2){ return num1 +num2;};//another stylevar sum =new function("num1","num2","return num1 +num2");//no recommend
注意function declare是解析器首先读取的,而function expression是在执行到它时才会读取的。function内部有两个特殊的对象arguments和this,arguments是一个类数组对象,保存着传入function的所有参数,arguments还有一个callee属性,指向拥有这个arguments对象的函数;this代表函数在执行时所处的环境对象;而function自己作为一个对象,也有属性和方法。每个function都有两个属性length和prototype,两个方法apply和call。
length:代表的是所传参数的个数;
prototype:通过对象实例访问的区域,相当于静态变量;
apply和call:在特定的作用域中调用函数,注意第一个参数是作用域;