YUI3内核分析(一)——YUI3实例化过程

/**
 * 如果有自定义的YUI对象,将定义的对象复制到_YUI属性中
 */
if (typeof YUI != 'undefined') {
	YUI._YUI = YUI;
}
/**
 * 定义YUI全局对象
 * 
 */
var YUI = function() {
	/**
	 * 定义实例对象属性 Y:在未实例化前this指向window,实例化后指向YUI对象
	 */
	var i = 0, 
		Y = this, 
		args = arguments, 
		l = args.length, 
		instanceOf = function(o, type) { // instanceof函数化
			return (o && o.hasOwnProperty && (o instanceof type));
		};

	/**
	 * 自我实例化过程
	 * 当调用YUI()时,首次Y不是YUI实例,将new出一个对象
	 * 此时YUI()将再次从头到尾运行下来,此时Y已经是YUI对象了,本次将执行Y._init()方法
	 * 然后看闭包里面的实现
	 */
	if (!(instanceOf(Y, YUI))) {
		Y = new YUI();
	} else {
		Y._init();
	}
	
	Y.instanceOf = instanceOf;
	
	return Y;
};

(function() {
	var proto, VERSION = '0.0.1';

	proto = {
		_init : function() {
			var Y = this;
			Y.constructor = YUI;		//字面量声明,原型对象构造函数指回YUI
		},
		use:function(){
			//
		},
		sayHello:function(name){
			console.log('Hello YUI I am '+name);
		}
	};
	
	YUI.prototype=proto;		//YUI原型对象指向proto
})();


以上是YUI对象实例化的主要结构体,测试运行:

YUI().sayHello('steve');


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值