UEeditor之util.js 学习总结

来源:互联网 发布:手机谱曲的软件 编辑:程序博客网 时间:2024/06/01 10:46

makeInstance(以obj为原型对象创建实例)

/*//对象之间的赋值属于浅复制var b = {name:"David"};a = b;b.name = "Jhon";console.log(a.name);//"Jhon"*/var book = {bookname:"Js Book",page:108}var makeinstance = function(obj){function f(){};f.prototype = obj;//f.prototype和obj对象共同指向一个对象实例obj = new f;//实例化之后obj._proto_指向f.prototype所指向的实例f.prototype = null;//垃圾回收//console.log(obj.__proto__ );//每个实例都包含[[Prototype]]属性,但是这个属性不可见且不能枚举。return obj;}var a_obj = makeinstance(book);

defer.js

defer利用闭包创建一个延迟执行的函数,封装timeid属性。

var defer = function(fn,delay,exclusion){var timeId;return function(){if(exclusion){clearTimeout(timeId);}timeId = setTimeout(fn,delay);}}

domReady.js

类似$(document).ready函数,当dom加载成功后调用相应的函数,这里的写法类似于jq的源码。

var domReady = function(){var isReady = falsefnArr = [];function doReady(){isReady = true;for(var ci;ci=fnArr.pop();){//这里不用判定ci是否存在?ci();//可能pop没了就会结束}}return function(onready){if(document.readyState ==="complete"){//document加载有两个状态interactive和completereturn setTimeout(onready,1);}onready&&fnArr.push(onready);isReady&&doReady();(function(){if(isReady)return;try{document.documentElement.doScroll("left");//ie中是否确定dom加载成功}catch(e){setTimeout(arguments.callee,0);//让渲染线程先占用cpureturn;}doReady();  })();window.attachEvent('onload',doReady);//更好的兼容各浏览器}}();






原创粉丝点击