一、构造函数直接返回一个对象,避免调用时出错。

Function Fvar F = function () {
var f = this;
instanceOf = function (o, type){
return (o && o.hasOwnProperty && (o instanceof type));
};
if(!(instanceOf(f, F))){
f = new F();
}
f.say = function(){
console.log('instance');
};
f.instanceOf = instanceOf;
return f;
};

二、充分利用YUI是一个全局的变量,也是一个全局的对象,可以在YUI上存放很多属性及方法。YUI的很多全局属性及方法都是利用YUI.Env这一个对象来进行中转的

Function F(function(){
proto = {
speak: function(){
console.log('this is speak from prototype');
},
age: 26,
_init: function() {
var f = this,G_Env = F.Env, Env = f.Env;
if(!Env){
f.Env = {
sex: 'man',
work: 'web worker',
love: 'lhy'
}
}
f.version = '0.0.1';
Env = f.Env;
f.Env.fsy = function(){
console.log('some message');
}
}
};
F.prototype = proto;
for(prop in proto){
if(proto.hasOwnProperty(prop)){
F[prop] = proto[prop]
}
}
F._init();
}());

三、充分利用this指向进行操作,比如YUI的对象配置分为YUI.GlobalConfig(全局配置),YUI_config(页面配置),YUI()(调用时传入参数的实例配置)三部分,就在原型中定义了一个applyConfig方法,从而通过不同的调用来进行配置。

四、一个yui.js在页面上第一次被引用后的执行顺序是

检测全局对象YUI是否存在 ---->  定义YUI构造函数  --->  自执行函数;

在自执行函数时,会进行以下几步

定义私有变量及方法 ---->  给html加类名 --->  定义一个包含一系列方法及属性的对象proto  --->  将YUI对原型指向对象proto ---->  将proto中的方法及属性显示的赋给YUI,从而可以配置YUI -----> 给YUI重定义一个配置参数的方法(先配置全局的、再配置传入的、再将全局参数重置) --->  调用YUI._init()来初始化运行环境 –—> 监听window.load ---> 将事件监听及注销函数赋给YUI.Env --->  在YUI.Env上为版本VERSION开辟一个空间,便于进行版本hash对象,

运行完毕以后,一个YUI会有以下属性及方法

applyConfig,_config,_init,_setup,applyTo,add,_attach,_delayCallback,use,_notify,_use,namespace,log,message,dump,error,guid,stamp,destroy,version,Env,_yuid,id,constructor,config

初始化环境函数执行步骤

定义YUI的版本号 ----->   配置环境 ------->   配置YUI的ID ------>  创建css标记元素 ------->  增加默认配置的语言  --------> 增加默认配置路径

配置完毕的环境为

core,loaderExtras,mods,versions,base,cdn,_idx,_used,_attached,_missed,_yidx,_uidx,_guidp,_loaded,_BASE_RE,parseBasePath,getBase,cssStampEl,add,remove,3.12.0,

YUI 之yui.js的更多相关文章

  1. 使用雅虎YUI Compressor压缩JS过程心得记录

    对待发布的项目进行测试时,发现js下载量比较大,从jquery的min版想到了压缩项目中的js文件.很简单的google之(在此,强调一下google的重要性),搜到一个叫做YUI Compresso ...

  2. Jquery,YUI这个著名js库名称作用的理解

    看廖雪峰大神的教程,其中讲到变量作用域问题.在命名空间中,写到:因为全局变量绑到了window上,不同的js文件访问相同全局变量或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现. 减少冲 ...

  3. YUI+Ant 实现JS CSS压缩

    今天研究了一下YUI yahoo开源框架,感觉很猛啊. 于是乎我做了一个YUI的ant实现,网上好多关于bat的实现,我就另辟蹊径,出个关于这个的ant实现,嘿嘿独一无二的文章,如果转载的话,其注明作 ...

  4. 使用YUI+Ant 实现JS CSS压缩

    今天研究了一下YUI yahoo开源框架,感觉很猛啊. 于是乎我做了一个YUI的ant实现,网上好多关于bat的实现,我就另辟蹊径,出个关于这个的ant实现,嘿嘿独一无二的文章,如果转载的话,其注明作 ...

  5. JAVA使用YUI压缩CSS/JS

    前言 JS/CSS文件压缩我们经常会用到,可以在网上找在线压缩或者本地直接使用,我这里使用的是yahoo开源组件YUI Compressor.首先介绍一下YUI Compressor,它是一个用来压缩 ...

  6. 【JS代码压缩】使用YUI Compressor对js文件进行压缩处理

    概述 在使用html5开发Hybird APP的时候,可能会引入大量的js包,另外对于一些核心的js文件,进行一些特殊的处理, 如压缩和加密就显得很重要了,YUI Compressor就是这样一个用于 ...

  7. YUI Compressor JS和CSS压缩工具使用方式(使用前安装JDK)

    压缩测试: 选中 test.js, 执行右键菜单“Process with &YUICompressor”,会生成 test-min.js. 注意事项: 1. 需要安装 JDK >= 1 ...

  8. YUI的模块化开发

    随着互联网应用越来越重,js代码越来越庞大,如何有效的去组织自己的代码,变得非常重要.我们应该学会去控制自己的代码,而不是到最后一堆bug完全不知道从哪冒出来.前端的模块化开发可以帮助我们有效的去管理 ...

  9. YUI 的模块信息配置优先级关系梳理

    背景 YUI的配置参数较多, 可以在好几个地方配置一个module的相关信息, 如: //在全局配置, 所以YUI实例共享 YUI_config = { modules: { 'w-autcomple ...

随机推荐

  1. Java中解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...

  2. 一元多项式Polynomial的C语言实现

    /* 编译器:Dev-c++ 5.4.0 文件名:Polynomial.cpp 代码版本号:1.0 时间:2015年10月9日21:53:26 */ /* 总结: 1.结构体指针指向的区域要手动分配内 ...

  3. Special Pythagorean triplet

    这个比较简单,慢慢进入状态. A Pythagorean triplet is a set of three natural numbers, a b c, for which, a2 + b2 = ...

  4. 深入理解JavaScript Hijacking原理

    最近在整理关于JavaScript代码安全方面的资料,在查关于JavaScript Hijacking的资料时,发现关于它的中文资料很少,故特意整理一下. 一.JavaScript Hijacking ...

  5. curl 提交请求

    http://forums.phpfreaks.com/topic/194255-curl-sending-array-as-post-value/ http://www.cnblogs.com/ch ...

  6. yum 使用说明

    linux如何安装yum 使用YUM来安装软件,就可以不用去到处找依赖关系的RPM了.很方便. 第一步:安装yum  第二步:下载createrepo包并安装 下载地址: ftp://195.220. ...

  7. 【HDOJ】1011 Starship Troopers

    第一道树形DP.很容易理解. #include <cstdio> #include <cstring> #include <cstdlib> #define MAX ...

  8. brent ozar的sqlserver dba训练课程翻译——第二章:手动恢复数据库

    备份的唯一原因 备份的唯一原因是我们可以还原   当我第一次成为sqlserver数据库管理员,只要备份工作都能成功运行,我就会觉得一切都很好.我会查看sqlserver代理,保证那些作业都在运行,然 ...

  9. 一种调用opencv库的C++工程通用的Makefile模板

    第一次自己写makefile,记录一下 #Compilers #CXX=/opt/compiler/gcc-/bin/g++ CXX = g++ #Includes INCLUDE_FLAGS = - ...

  10. (转)20 个大大节省你时间的 HTML5 开发工具

    Rendera 如果你希望有个环境可以测试.浏览和体验各种不同的 CSS/HTML 和 JavaScript 代码,Rendera 为你提供了实时的运行结果.类似 RunJS. Patternizer ...