七天恶补java_[Java教程]Javascript基础恶补

[Java教程]Javascript基础恶补

0 2016-02-26 15:00:07

1、字符集:

Javascript采用Unicode字符集,支持地球上所有在用的语言。2、区分大小写:

Javascript区分大小写,HTML不区分大小写。3、空格、换行、格式控制符:

Javascript忽略空格、换行,可以采用整齐、一致的缩进来形成统一的编码风格。4、Unicode转义序列:

使用6个ASCII字符来代表任意16位Unicode内码。这些Unicode转义序列均以\u为前缀,后跟4个十六进制数。5、注释:

//单行注释的一种方式

/*单行注释的另一种方式*//*

多行注释

多行注释

*/

6、直接量

程序中直接能使用的值

1,2.1,"hello",true,null等7、标识符

用来对变量或函数进行命名

以字母、_,$开头8、保留字

也就是关键字,程序中不能使用Javascript中的默认关键字

比如break, delete, function, return, etc9、可选的分号

如果语句独占一行,其后的分号可以省略。■ 类型、值和变量10、数据类型

能够表示并被操作的类型称作数据类型。11、变量

用来标识值得符号名称,可以通过变量获得值得引用。12、数据类型

原始类型primitive type和对象类型object type。

数字、布尔值、数字是原始类型。

null和undefined是两个特殊的原始类型。

对象是属性的键值对集合。

数组array是特殊的对象,定义了专用的语法。

函数也是特殊的对象,函数可看作相关联的可执行代码。13、构造函数

使用new新建对象,称为构造函数。

构造函数定义的对象可以看作是一个类。

构造函数用来初始化对象。14、系统默认类

Date代表日期的类。

RegExp表示正则表达式的类。

Error表示处理错误的类。15、内存管理机制

解释器有自己的垃圾回收机制。

当不再有任何引用指向一个对象,自动回收占用的内存资源。16、可变类型和不可变类型

不可变类型值不可以修改,可变类型值可以修改。

对象和数组属于可变类型。

数字、布尔值、null和undefined属于不可变类型。

字符串虽然可以看作是字符数组,但它是一个不可变类型。17、数据类型转换

可以自由地进行数据类型转换。

在期望使用字符串的地方使用数字,会将数字自动转换成字符串。18、变量是无类型的

变量可以被赋予任何类型的值

同样一个变量可以重新赋予不同类型的值

全局变量和函数内变量19、整型直接量

● 十进制整型直接量

● 十六进制整型直接量,即以16为基数,以"0x"或"0X"开头,a-f或A-F表示10-15,比如0xff,就相当于15*16 + 15 = 255

● 有些支持八进制,以0开头,推荐不使用20、浮点型直接量

● 包含整数部分、小数点、小数部分

● 还可以用指数计数法表示浮点,即在实数后跟字母e或E,3.02e23,表示3.02*10的23次方21、算术运算符

● +, -, *, /,%

● Math对象

Math.pow(2,5) 2的5次幂

Math.round(.6) 四舍五入

Math.ceil(.6)向上求整

Math.floor(.6)向下求整

Math.abs(-2)绝对值

Math.max(x, y, z)

Math.min(x, y)

Math.random()0和1之间的随机数

Math.PI

Math.E 自然对数的底数e

Math.sqrt(3)平方根

Math.pow(3, 1/3)立方根

Math.sin(0), Math.cos, Math.atan

Math.log(10) 10的自然对数

...22、算术溢出

溢出分为overflow, underflow,被零整除

溢出不会报错

Infinity表示正的无穷大

-Infinity表示负的无穷大

underflow是无限接近于零,分为0和-0

0处于零,报NaN,用来表示非数字值23、判断非数字值

x!=x,当x且仅当x为NaN的时候,才为true

isNaN()函数也是相似的道理

isFine(),当参数不为NaN,Infinity,-Infinity的时候返回true24、日期和时间

new Date(2010,0,1)

new Date(2010,0,1,17,10,30)

new Date()

getFullYear()

getMonth()

getDate()

getHours()

getUTCHours()25、字符串

16位值组成,不可变,有序,序列

字符串用来表示文本

有长度length,索引从0开始

Javascript并没有表示单个字符的"字符型"

单引号中可以包含双引号

双引号中可以包含单引号

+字符串连接

length属性

charAt(0)

charAt()

subString(1,4)2到4号位值上的字符

slice(1,4)2到4号位值上的字符

slice(-2)最后2个字符

indexOf("1")

lastIndexOf("1")

split(",")

replace("","")

toUpperCase()26、转义

\n表示另起一行

\反斜线转义27、RegExp()函数

两条斜线之间的文本构成了正则表达式

/^HTML/以HTK开始的字符串28、布尔值

if(o),当o为undefined, null, 0, -0, NaN为时为false29、null和undefined

用来描述空值,是关键字

对null执行typeof返回object

当作为参数传入函数,推荐使用null。

undefined是变量的一种取值,表明变量没有被初始化。

查询对象属性或数组元素返回undefined,表示属性或元素不存在。

函数没有返回值,返回undefined。

引用没有提供函数形参对应实参时会得到undefined。30、全局对象

● 全局属性:undefined, Infinity, NaN

● 全局函数:isNaN, parseInt, eval

● 全局对象:Date, Regexp, String, Object, Array31、不可变原始值

undefined, null, 布尔值, 数字和字字符串,是原始值,不可更改。

原始值的比较是值的比较。32、可变的对象引用

对象是可变的,对象的值是可以修改。

对象的比较不是值得比的比较33、返回true的情形

null==undefined

"0"==0

0==false

"0"==false34、一个值可以转换成另外一个值并不意味着两个值相等

if(undefined)返回false,并不说明undefined和false相等35、显式类型转换

使用Boolean(), Number(), String(), Object()等函数。

Number("3")

String(false)

Boolean([])

Object(3)

null和undefined不能转化为对象36、隐式类型转换

+ 作为字符串连接,把其中一个非字符串转换为字符串。

!将操作数转化为布尔值并取反37、switch语句

switch(n){

case 1:

//语句

break;

case 2:

//语句

break;

default:

//语句

break;

}38、while

var count = 0;

while(count < 5){

console.log(count);

count++;

}39、do/while

funnction printArray(a){

var len = a.length, i = 0;

if(len == 0){

console.log("empty");

} else {

do {

console.log(a[i]);

} while (++i < len);

}

}40、for

for(var count = 0; count < 10; count++)

var i,j;

for(i=0, j=10; i < 10; i++, j--)41、for/in

for(var pi in o)42、break退出循环for(var i = 0; i < a.length; i++){

if(a[i]==target)

break;

}43、break 标签, 退出非就近的循环

var matrix = getData(); //得到一个二维数组

var sum = 0, success = false;

compute_sum: if(matrix){

for(var x = 0; x < matrix.length; x++){

var row = matrix[x];

if(!row) break compute_sum;

for(var y = 0; y < row.length; y++){

var cell = row[y];

if(isNan(cell)) break compute_sum;

sum += cell;

}

}

success = true;

}44、continue

for(var i = 0; i  < data.length; i++){

if(!data[i]) continue;

}continue也可跟标签45、throwfunction factorial(x){

if(x < 0){

throw new Error("");

}

}46、try/catch/finallytry{

}

catch(ex){

alert(ex);

}46、withwith(document.forms[0]){

name.value = "";

}把document.forms[0]临时挂在作用域上。47、debugger 临时调试function f(o){

if(o === undefined) debugger;

}48、对象

属性的无序集合。

每个属性都是一个键值对。

属性名是字符串,从这点上可以把对象看成字符串到值得映射。

对象都有一个原型对象属性,实现"原型式继承",动态添加属性和方法。

对象的属性名不能重复。49、对象直接量创建对象var empty = {};

var book = {

"main title": "" //属性名有空格必须用引号

}保留字作为属性名,必须用引号。

最后一个属性的属性值后的逗号可以省略。50、通过new创建对象var o = new Object();

var a = new Array();

var d = new Date();

var r = new RegExp("js");51、Object.create()创建对象var o1 = Object.create({x:1,y:2});//创建普通的空对象

var o = Object.create(Object.prototype);//等同于

{}和new Object()52、通过原型继承创建一个新对象function(p){

if(p == null)

throw TypeError();

if(Object.create)

return Object.create(p);

var t = typeof p;

if(t !== "object" && t !=="function")

thrwo TypeError();

function f(){}

f.prototype = p;

return new f();

}53、对象属性的查询和设置给null或undefined设置属性值会报类型错误

有一些属性是只读的,也不能设置。

var a = book.author;

var t = book["main title"];

book.edition=6;

book["main title"] ="";

查询对象并不存在的属性不抛异常抛undefined:book.x; // undefined

对象不存在抛异常:book.x.length//加判断防止抛异常或undefined

var len = undeinfed;

if(book){

if(book.x){

len = book.x.length;

}

}//一种更简洁的写法

var len = book && book.x && book.x.length;54、删除对象属性delete book.author;

delete book["main title"];

delete只能删除自有属性,不能删除继承属性。

删除成功或没有任何副作用返回true。55、检测对象属性

var o = {x:1};

"x" in o

o.hasOwnProperty("x")56、遍历对象属性var o = {x:1, y:2};

for(p in o){

console.log(p);

}还可以对对象属性过滤。for(p in o){

if(!o.hasOwnProperty(p)) //跳过继承的属性

continue;

}for(p in o){

if(typeof o[p] === "function"){

continue;

}

}57、对象属性getter和settervar o = {

data_prop:value,

get accessor_prop(){},

set accessor_prop(value){}

}58、对象属性的特性用来表述属性的属性。

Object.getOwnPropertyDescriptor({x:1},"x");

Object.getOwnPropertyDescriptor(random, "someprop");59、对象的原型属性

在实例对象创建之前就设置好的。

Object.prototype

查看对象的原型Object.getPrototypeOf(把对象作为实参)

检测p是否是o的原型:p.isPrototypeOf(o)60、对象的类属性

字符串,表示对象的类型信息

toString()方法查询它61、对象的可扩展性

表示是否可以给对象添加新属性

Object.isExtensible()62、序列化对象

将对象与字符串之间进行转换。

把对象转换为字符串用:JSON.stringfy()

把字符串转换为对象用:JSON.parse()63、对象的方法

所有的对象从Object.prototype继承属性。

toString()

toLocalString()

valueOf()64、数组

数组是值的有序集合。

每个值叫数组元素。

每个元素在数组中的位置就是索引。65、创建数组

var a = [];

数组元素可以是直接量、表达式、对象

var a = new Array();66、数组元素读写

var a = ["world"];

var value = a[0];

a[1] = 3;67、稀疏数组

数组的长度大于元素个数。

a = new Array(5);68、数组元素的添加和删除

a = [];

a[0]="";

a[1]="";

a.push("");

delete a[1]索引为1的位置不能再有元素69、数组遍历

for(var i =0; i < keys.length; i++)

for(var i = 0, len = keys.length; i < len; i++)

for(var index in sparsArray)

data.forEach()70、多维数组

var talbe = new Array(10);

for(var i = 0; i < table.length; i++){

tables[i] = new Array(10);

for(var row = 0; row < table.legnth; row++){

for(col=0; col < tables[row].lenght; col++){

table[row][col] = row*col;

}

}

}71、数组方法

a.join("")

a.reverse()

s.sort()

a.concat()

Array.slice()获取数组片段

Array.splice向数组插入或删除元素

push()和pop()

shift()和unshift()72、ECMAScript5中的数组方法

forEach(),map(), filter(), every(), some(), reduce(), reduceRight(),indexOf(), lastIndexOf()73、判断数组类型

Array.isArray([]), Array.isArray({})74、函数

函数是一段代码。

函数的形参像局部变量一样工作。

函数调用会为形参提供实参的值。

每次调用会有一个上下文。

函数挂在对象上,就是对象方法。

调用对象方法,上下文就是该对象。

初始化一个新创建对象的函数交构造函数。

函数就是对象,可以把函数赋值给变量,把函数作为参数,也可把函数作为属性值。

函数可以被包含在函数内,外层的函数就是作用域,内层的函数可以使用作用域内的变量,这就是闭包。75、函数作为值

函数可以赋值给变量,赋值给对象的属性,赋值给数组元素。//赋值给变量

function square(x){

return x*x;

}

var s = square;//赋值给属性

var o = {

square: function(x){

return x * x;

}

}

o.squre(6);//赋值给数组元素

var a = [function(x){return x*x;},20];

a[0](a[1]);76、自定义函数属性

函数是特俗的对象,可以拥有属性。

fn.counter = 0;

function fn(){

return fn.counter++;

}77、call()和apply()方法

以对象o的方法来调用函数f。

f.call(o)

f.apply(o)f.call(o, 1, 2);

f.apply(o, [1, 2])78、Function()构造函数

var f = new Function("x", "y", "return x*y;");79、类

基于原型的继承机制。

类是动态可继承。

类的所有实例对象都从同一个原型对象上继承属性。80、类和构造函数

构造函数用来初始化新创建的对象。

new调用构造函数。

调用构造函数就是把prototype属性用作新对象的原型。

function Range(from, to){

this.from = from;

this.to = to;

}Range.prtotype = {

includes: function(x){

return this.from <=x && x <= this.to;

},

foreach: function(f){

for(var x = Math.ceil(this.from); x <= this.to; x++)

f(x);

}

};81、类原型的constructor属性

var F = function(){};

var p = F.prototype;

var c = p.constructor;

c===F82、类的继承class Animal{

constructor(voice){

this.voice = voice || '';

}

speak(){

display(this.voice);

}

}class Cat extends Animal{

constructor(name, color){

super('Meow')

this.name = name

this.color = color

}

}var fulffy = new Cat('fluffy', 'White');

fluffy.speak();

本文网址:http://www.shaoqun.com/a/196177.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JavaScript

0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值