-
Notifications
You must be signed in to change notification settings - Fork 7
article note for js
由于之前接触较少,快速阅读。主要要理解canvas能达到的效果
基本上一些css的常见效果都能达到,由于本人徧程序逻辑,知道有这些效果即可
可以使用其他图像数据,img
元素或者另外一个canvas元素
WebGL是canvas的3D上下文,规范还比较新
- 设想练习:用svg,canvas,dom各实现一个时钟效果
- 第16章 HTML5脚本编程
几个HTML5新增的脚本特性
历史状态管理接触得比较多
- 第17章 错误管理
目前较流行开发人员工具,此章弱化
- 第18章,Js与XML;第19章,E4X
主都是讲述在JS环境下操作XML,先过一遍,等项目有需要的时候重补
20.2.2 序列化选项,P566
JSON.stringify(object,filter/replacer,padding)
- filter/replacer可以是一个数组,只过滤出object中相应的key集合
- filter/replacer也可以是一个函数,有两个参数key,value,决定怎么序列化
- padding是 缩进字符,可以是空白,制表符或其他符号,不超过10字符
object.toJSON()
定义特定对象序列化的方法
JSON.parse(string,reviver)
- reviver 是一个函数,有两个参数key,value,决定怎么还原JSON字符串,如果返回undefined,则会删除特定键值
xhr.send(请求主体的数据,get请求可以写null,post则写相应的请求主体数据);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XMLHttpRequest 2级 定义了进度事件,其中progress事件有百分比API
跨域技术:图像Ping,JSONP(最经典),Comet,Web Scokets等,目前接触得比较少,但鉴于面试很经常遇到,需要整理
var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON) === "[object JSON]";
作用域安全函数,要注意用原型链继承
function Person(name,age,job){
if (this instanceof Person){
this.name = name;
this.age = age;
this.job = job;
} else {
return new Person(name,age,job)
}
}
惰性载入函数,对于有分支判断的情况,在判断完分支后直接把结果函数赋值出去 P600
函数绑定
原生有Function.prototype.bind
,也可以这样实现
Function.prototype.mybind = function(content){
var that = this;
return function(){
return that.apply(content,arguments)
}
}
var obj1 = { prop:1};
var obj2 = { prop:2,fn:function(){ return this.prop} };
console.log(obj2.fn.mybind(obj1)()); //1
定时器的高级使用 JS单线程,故定时器的时间只能保证任务加到列队,重复的setTimeout能保证上一个任务执行完毕后再把下一次任务加到列队 把大的任务分割(chunk)开来,浏览器容易及时响应用户
自定义事件 用原生方法实现
联想,《基于MVC》,用jQuery实现:
(function(){
var o = $({});
$.subscribe = function(){
o.bind.apply(o,arguments);
};
$.unsubscribe = function(){
o.unbind.apply(o,arguments);
};
$.publish = function() {
o.trigger.apply(o, arguments);
};
})(jQuery)
- navigator.onLine, window的online事件,用LG旧手机测试有效
- appcache 说是要配置mime type,但没配置也生效,也许tomcat默认是这样的
- appcache verson 信息放在注释里即可 # VERSION 1.32
- appcache 的版本更新后,要到下一次刷新页面才生效
window.addEventListener("load",function(){
if (window.applicationCache) {
window.applicationCache.addEventListener('updateready', function(e) {
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
console.log("有新版本可更新,正在更新缓存:"+ new Date)
window.location.reload();
} else {
// Manifest didn't changed. Nothing new to server.
}
}, false);
};
},false);
少对dom交互,经常读取的dom一定要用变量储存起来 JSLint的验证过程可以放在自动化构建中,ant可以,grunt,gulp也应该可以
requestAnimationFrame 针对动画,不知道css3新兴的动画animation与之孰优孰劣
Page Visibility ,浏览器窗口是否隐藏
Geolocation 地理定位
File API
:基本读取,读取部分,拖放的文件event.dataTransfer.files
blob url:指向该文件对象的路径
xhr上传文件:xhr.send(data)中的data来源于new FormData() 则可以用data.append方法去增加file对象
web计时:页面重定向次数 web workers :js多线程