Image: --core HTML5 canvas p20
var spritesheet = new Image(); spritesheet.src = '../running-sprite-sheet.png'; function drawSpritesheet() { context.drawImage(spritesheet,0,0); } spritesheet.onload = function(e){ drawSpritesheet(); }
Object:
数据属性: 1.[[Configurable]] //表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。 2.[[Writable]] //能否修改属性的值 3.[[Enumerable]] //能否通过for-in循环返回属性 4.[[Value]]//属性的值 Object.defineProperty()1:属性所在的对象2:属性的名字3:一个描述符对象,描述符的对象属性必须是:configurable,writable,enumerable,value;例如{configurable:false,value:"Nicholas"} //如果configurable设置为false,那么再调用Object.defineProperty()方法修改除了writable之外的属性都抛出错误 //访问器属性 1.[[Configurable]] //同上 2.[[Enumerable]] 3.[[Get]] //在读取属性时调用的函数 默认Undefined 4.[[Set]] //在写入属性时调用的函数 默认Undefined //访问器属性不能直接定义,需要通过Object.defineProperty()来定义 var book = { _year:2004,edition:1}; Object.defineProperty(book,"year",{get:function(){return this._year;},set:function(newValue){ if (newValue > this._year){ this._year = newValue; edition += newValue - this._year;}} Object.defineProperties(book,{ //上面所有属性,每个属性后面要是一个对象比如:_year:{value:2004;},year:{get:function(){},set:function(){}} } //读取属性的特性 Object.getOwnPropertyDescriptor()1:book2.要读取其描述符的名称//返回一个对象:如果是数据属性:configurable,enumerable,writable,value;如果是访问器属性:configurable,enumerable,get,set; //------------------ prototype属性:一个指针,指向一个对象,可以由所有实例共享的属性和方法。 //创建了自定义构造函数后,其原型对象默认只会取得constructor属性,其他属性均由Object继承而来。 isPrototypeOf() Person.prototype.isPrototypeOf(person1);//true Object.getPrototypeOf(person1) == Person.prototype //true Object.getPrototypeOf(person1).name person1.hasOwnProperty("name") //只有实例属性才返回true person1.getOwnPropertyDescriptor("name") //返回实例属性描述符,如果是要得到prototype,直接原型调用 alert("name" in person1);//true 不管是实例还是原型,有name属性就返回true Object.keys() //取得对象上所有可枚举的属性,返回字符串数组,只返回参数的作用域 Object.getOwnPropertyNames()//返回作用域内的所有属性 Object.propertyIsEnumerable() //原型式继承 Object.create()1:用作新对象的原型对象2:[为新对象定义额外属性的对象]
Date: -- core p17
Date对象的初始化是根据下面2个函数,返回从1970.1.1 00:00:00至今的毫秒数(基于本地时区): 1.Date.parse()1:字符串<"6/24/2014","May 14,2013","Tue May 25 2004 00:00:00 GMT-0700"> 2.Date.UTC()1:year,2:month(0-11),3:day(1-31),4:hour(0-23),5:minites,6:seconds,7:milliSeconds //继承方法 toLocalString() toString() valueOf() //返回毫秒数,可用于Date对象的直接比较 getTime() return ms setTime(ms) getFullYear() //2007 getUTCFullYear() //UTC full year setFullYear(2007) setUTCFullYear() getMonth() //0-11 getUTCMonth() setMonth() //1:0-11 如果传入12,会增加年份,同date,hour,minutes,seconds,milliseconds setUTCMonth() getDate() //1-31 getUTCDate() setDate()//1:1-31 setUTCDate() getDay() //week 0-6 getUTCDay() setDay() //week 1:0-6 setUTCDay() getHours() //0-23 getUTCHours() setHours() setUTCHours() getMinutes() //0-59 getUTCMinutes() setMinutes() setUTCMinutes() getSeconds() //0-59 getUTCSeconds() setSeconds //0-59 setUTCSeconds() getMilliseconds() getUTCMilliseconds() setMilliseconds() setUTCMilliseconds() getTimezoneOffset() //返回本地时区与UTC时间相差的分钟数
Array :
array.push() //1或者多个参数,从数组后面推入,返回数组长度 array.pop() //从数组后面提取一个返回,length -1 array.shift()//从数组的头部去除一个返回,length -1 array.unshift()//从数组头部推入n个元素,返回数组长度 array.reverse()//数组反序排列 array.sort()//无参数会先调用toString(),因此需要一个参数:比较函数compare:第一个参数<第二个参数,需返回负数> array.concat()//没有参数,回复副本,有一个参数或数组,衔接到数组后面,返回新数组 array.slice()//同python的[first:end],有负数参数 array.splice()//1参数:位置,2:删除项数,3-n:添加项数,返回从数组删除的项,如果2参数为0,则返回空数组 array.IndexOf()/lastIndexOf()//1:查找的项2:开始的位置,返回位置 //迭代方法 array.every()/*全中*/some()/*至少一项中*/filter()/*过滤*/forEach()/*运行每项*/map()/*运行每项,返回结果数组*/ 1:运行的函数(1:数组项的值,2:索引3:数组本身)2:[运行该函数的作用域对象] //并归函数:迭代所有项,返回最终值 array.reduce() array.reduceRight() //1:并归函数(1:prev,2:cur,3:index,4:array),返回值作为下次迭代的prev.2:[并归初始值]
RegExp:
var regexp = /pattern/flags; var regexp = new RegExp() 1:pattern,2:flags flags:1.g:global,全局模式2.i(ignore-casesensive)忽略大小写模式3.m (multiple-line)多行模式 正则表达式元字符,必须转义:()[]{}.|?*^+\$ 正则的实例属性: 1.regex.global是否全局2.regexp.ignoreCase3.regexp.lastIndex搜索下一个匹配项的位置,0开始4.regexp.multiline,5.regexp.source正则表达式的字符串表示 其他属性: 1.regexp.input 返回需要匹配字符串2.regexp.leftContext 匹配左侧内容3.regexp.rightContext4.regexp.lastMatch/*最后匹配字符串*/,5.regexp.lastParen/*最后捕获组*/ //构造函数属性 regexp.$1-9//表示9个捕获组的访问标识,自动填充 exec()1:text 返回一个数组,包含Index<匹配的索引> && Input <text> 如果未设置捕获组情况下,在不设置全局的时候,同一text多次匹配都是返回第一匹配项信息;而设置全局下,会继续寻找匹配项,lastIndex会设置为下一个匹配项开始的位置 test()1:test 返回bool 继承方法: 1.toLocalString()2.toString()//都会返回正则表达式的字面量. 3.valueOf()//返回正则表达式本身
Function:
/*函数内部有两个特殊的属性:*/ 1.this,2.arguments:还拥有一个callee指针,指向拥有该arguments的函数3.caller:该函数的调用者 arguments.callee.caller 3.默认的name属性,function后面的标示符 /*函数属性*/ 1.length:参数的个数 2.proto 3.apply()1:作用域2:数组或aguments 4.call()1:作用域2:具体参数 5.bind()1:object//会把this绑定到object上 6.toLocalString(),toString(),valueOf()//返回函数的代码
基本类型:
var value = "25"; var number = Number(value); //转型函数 alert(typeof number)//“number” var obj = new Number(value); alert(typeof obj) //object //使用new 实例化基本包装类型,与直接调用同名转型函数是不一样的
Number:
1.toFixed()1:number//显示几位小数,四舍五入 2.toExponential()1:小数位数//返回指数表示法(e)的字符表示方法 3.toPrecision()1:位宽
String:
string.length //字符长度,真实长度(不管字符占位单字节或双字节) string.charAt()1:int//以0为开始索引--同[int]操作 string.charCodeAt()1:int//字符编码 string.concat()1~n:string,拼接,本身不改变 string.slice() 1:startIndex,2:[end] 如果存在负数,实际是负数+长度的实际结果 string.substr() 1:startIndex,2:字符个数 如果第一个是负数+长度,第二个转化为0 string.substring()1:startIndex,2:[end] 如果存在负数全部转化为0,且自动匹配起始、结束位置 string.indexOf(),string.lastIndexOf()1:string2:[startIndex]返回index or -1 string.trim(),string.leftTrim(),string.RightTim() //删除空白 string.toUpperCase(),string.toLowerCase() string.toLocaleUpperCase(),string.toLocaleLowerCase() //建议 匹配模式 string.match()1:正则表达式 or RegExp对象//同RegExp.exec() string.search()1:同上 //返回第一个找到索引 or -1 string.replace()1:regexp or charactor?:只会替换一个 2:charactor or function(match,pos,originalText)如果是多个捕获组match和pos 中间多出 捕获组匹配项 string.splite()1:分隔符 or regexp 2:数组大小 //返回数组 string.localeCompare()1:string //如果字符串小于参数字符串,则返回-1;相等0;大于1,区分大小写 String.fromCodeChar() 1-n:字符编码//静态方法,不需实例化,返回相应字符串
Global:
isNaN() isFinite() parseInt() parseFloat() //对URI进行编码,以便发送给浏览器,URI不能包含有些字符 encodeURI() /*整个URI,只能编码空格,不能#:\?*/对应 decodeURI() encodeURIComponent() /*URI其中某一段,所有多能编码*/--> decodeURIComponet() eval() //就是javascript解析器,参数:内部语句的作用域和调用语句一样 window对象: //框架集:.top顶层框架 .parent 父级框架 //位置 screenLeft,screenTop //IE,Safari,Chrome,Opera screenX,screenY //Firefox,Chrome window.moveTo(x,y) window.moveBy()//移动多少像素 //窗口大小 window.innerHeight window.innerWidth window.outerHeight window.outerWidth window.resizeTo() window.resizeBy() //导航和打开窗口 window.open()1:加载url 2:目标窗口 3:一串特性字符串 4:一个新页面是否取代浏览器历史记录中当前加载页面的布尔值 window.close() window.opener 属性,指明父窗口 window.alert() window.confirm() window.prompt() window.print() window.find() //location window.location == document.location 相同 location.dash //#content location.host // location.hostname // location.href // location.pathname // /WileyCDA/ location.port //"8080" location.protocol //"http:" location.search //"?q=javascript" 以问好开头 location.assign()1:url //打开新纪录 location.replace()1:url 前一个页面不会有记录 location.reload()[true:重新服务器下载]false:从缓存
Math对象:
const: Math.E //常量e 自然对数的底数 Math.LN10 //10的自然对数 Math.LN2 //2的自然对数 Math.LOG2E //以2为底e的对数 Math.LOG10E //以10为底e的对数 Math.PI Math.SQRT1_2 //1/2的平方根 Math.SQRT2 //2的平方根 //多个参数,返回最大或最小值 Math.max() Math.min() Math.ceil() Math.floor() Math.round() Math.random() //返回0-1的浮点数,Math.floor(Math.random()*10 +1); Math.abs(num) //返回绝对值 Math.exp(num) //e的num次幂 Math.log(num) //num的自然对数 Math.pow(num,power) //num的power次方 Math.sqrt(num) //num的平方根 Math.acos(num) //num的反余弦 Math.cos(num) Math.sin(num) Math.asin(num) Math.tan(num) //正切 Math.atan(num) Math.atan2(x,y) //返回y/x的反正切