龙空技术网

javascript高级程序设计(第3版)-读书笔记(2)

前卫的依伯 62

前言:

当前看官们对“c程序设计第四版笔记”都比较着重,各位老铁们都需要知道一些“c程序设计第四版笔记”的相关文章。那么小编也在网上收集了一些关于“c程序设计第四版笔记””的相关知识,希望咱们能喜欢,你们快快来了解一下吧!

五、语句:

1、fon-in语句:此可能用来枚举对象的属性,与for 语句区别在于for只能进行值得循环,而不能进行对象循环;

如:for(var propName in window) {document.write(propName);} ////返回window的对象属性

六、函数(函数即对象)

1、函数的参数传递是通过数据传递的,传几个跟函数接收几个无关,比如:函数有两个参数,而传了0或3个参数,是OK的。

2、函数是通过arguments[n];来取传递过来的参数

如:function asyHi(){alert(argument[0]);} ///可以看到接收没设置参数,但调用函数时有传参数;

argument的两个属性: 

length, 获取arguments对象的长度。

  callee, 引用当前正在执行的函数(一般用于递归)。【关注这个的使用??】

4、this:在全局中指向windows ; 在局部中指向对应的变量或函数;【P146】

4、调用函数时,若没有给参数传值 ,则参数默认是undefined

5、函数没有重载(即两个函数名相同,但参数不同的函数),若javascript出现两个函数名相同的函数,则只生效后面一个函数;

6、函数定义:P110

1、 funciont sum(x,y){} ////此为函数声明 ,不需要以分号结束(函数声明函数的优先最高,可以放在语句的最后) P175

而默认获取函数名属性name是存在的:alert(funciton.name); ////得到函数名字,如上sum

2、a、var sum=function(x,y){}; ////,此为函数表达式,第二种函数相当于定义变量,最有个分号结束 ;

也叫做匿名函数,因为此时function.name是空的;

b、var sun=function functionName(x,y){}; ////此函数表达式,可以用来递归

如: var sun=function functionName(x,y){

if(x=1)

return 1;

else

return x*functionName(x);

};

c、(function sayHello() {

alert("hello!");

})(); /////第三种函数表达式写法,后面括号表示立即调用,若有参数则立即生效

解释:函数表达式在执行时,解释器会先读取函数声明,此优先级最高

所以可以采用先调用,再定义函数声明的方式:

alert(sum(10,10));

function sum(x,y){}

注: var anothers=sum; ////使用不带圆括号的函数名是访问函数指针,而非调用函数本身;

1.1、js函数没有重载,相同函数名的后面一个函数覆盖前面一个;

7、函数属性与方法:

7.1、函数默认有两个属性:length(函数接收参数的个数)、prototype(??)

7.2、函数方法:apply()、call()、bind() ====另外应用时详查资料

8、构造函数:

8.1、构造函数都以大写字母打头,而非构造函数都以小写字母打头;

8.2、使用new调用构造函数,这样构造函数会有以下步骤对应对象(例:书P145):

创建一个新对象;

将构造函数的作用域给新对象(this指向了这个新对象);

执行构造函数中的代码(为这个对象添加属性);

返回新

第4章:

一、基本类型和引用类型的值 P68

1、基本类型:直接赋值变量

引用类型:可以添加属性和方法(主要是对象变量);

2、在4.1.2中复制变量值

讲述 两个对象变量通过指针同时指向一个对象,则一个变量属性变了,另一个变量的属性也会变;

如:var name1=new object();

var name2=name2; ////同时指向一个对象

3、检测类型

3.1、typeof 检查反馈基本的类型

instanceof 只检查引用类型,返回true,若检测基本类型,返回flase;

第5章:引用类型

一、object类型对象创建两种方法

1、使用new操作符后创建:

var persion=new object();

persion.name="One";

2、对象字面量创建对象

var persion={name="One",age=29};

或:

var persion={}

persion.name="One";

persion.age=29;

3、对象属性的写法:

如:调用函数:desplayinfo({name="One",age=29}); ////这样定义了向函数desplayinfo传一个参数,但是带有两个属性的方法;这种方法适合向函数传入大量可行参数的情形;

4、获取对象的属性

如: alert(persion.name);

alert(persion["name"])

或:

var per="name";

alert(persion[per]);

二、数组:

1、定义:

var colors=new Array();

或 var colors=new Array(20);

或:var colors=new Array(“red”,"blue");

或:var colors=Array(3);

或:var colors=[“red”,"blue"];

2、栈方法:P92~93

1、数据推栈:push,pop,shift 等方法

2、排序方法:reverse, sort 等方法

3、几个操作方法:

concat() :基于当前的数组,增加值后,生成新的数组;

slice(x,[y]):从数组的x位置开始,到y位置结束,生成一个新数组;若y省略,则只取当前x位置的值 ;

splice(): 还具备删除、插入、替换等功能的应用;

indexof() ,lastindexof() ////位置函数

4、RegExp类型:主要用于正则表达示 P103

三、对象Object:

1、对象属性(双中括号):[[Configurable]] [[Enumerable]] [[Writable]] [[Value]]

2、访问属性(双中括号):[[Configurable]] [[]]

3、访问属性变量:如:_year; 这种定义下划线+变更名:表示只能通过对象方法访问的属性,而访问器属性包含一个getter(返回变量值)和Setter函数(通过计算来确定正确的版本)

4、对象的属性,需要通过Object.defineProperty() 方法来定义【例:AccessorPropertiesExample01.htm】:

Object.defineProperty(book, "year", {

get: function(){

return this._year;

},

set: function(newValue){

if (newValue > 2004) {

this._year = newValue;

this.edition += newValue - 2004;

}

}

});

标签: #c程序设计第四版笔记