canvas学习笔记04
来源:互联网 发布:dos下运行mysql 编辑:程序博客网 时间:2024/06/05 00:50
几天没写了,由于javascript是半桶水,导致canvas总是走走停停。
今天用到了设计模式,中介者模式。
由于js中的继承很~~。好变态的面向对象~~ 下面是大牛写的js的继承框架。
(function(){ var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/; // The base Class implementation (does nothing) this.Class = function(){}; // Create a new Class that inherits from this class Class.extend = function(prop) { var _super = this.prototype; // Instantiate a base class (but only create the instance, // don't run the init constructor) initializing = true; var prototype = new this(); initializing = false; // Copy the properties over onto the new prototype for (var name in prop) { // Check if we're overwriting an existing function prototype[name] = typeof prop[name] == "function" && typeof _super[name] == "function" && fnTest.test(prop[name]) ? (function(name, fn){ return function() { var tmp = this._super; // Add a new ._super() method that is the same method // but on the super-class this._super = _super[name]; // The method only need to be bound temporarily, so we // remove it when we're done executing var ret = fn.apply(this, arguments); this._super = tmp; return ret; }; })(name, prop[name]) : prop[name]; } // The dummy class constructor function Class() { // All construction is actually done in the init method if ( !initializing && this.init ) this.init.apply(this, arguments); } // Populate our constructed prototype object Class.prototype = prototype; // Enforce the constructor to be what we expect Class.prototype.constructor = Class; // And make this class extendable Class.extend = arguments.callee; return Class; };})();使用方法是:
先创建一个类:
var my_class = Class.extend({ //构造函数init:function(a){ this.a = a; }});
创建一个对象 my_object = new myclass("duixiang");
另外:js中的回调函数如的形式如果是这样:
xxx("xx",callback());
那么callback()中的this是window对象。
还有一类:
xx.onxxxx = function(){}
function中的this是xx
关于闭包传参的经典问题是:
for(var i =0;i<5;i++){ setTimeout(function(){console.log(i);},1000*i);}打印输出是5个5;程序应该解读为,事件一到,就打印i,而等到事件发生时,i早就变成的定值5,应为i是外层函数的i
0 0
- canvas学习笔记04
- wpf学习笔记---Canvas
- Canvas学习笔记一
- html5 canvas 学习笔记
- wpf学习笔记---Canvas
- canvas学习笔记-基础知识
- html5学习笔记 -- canvas
- HTML5学习笔记------Canvas
- html5 canvas 学习笔记
- Canvas学习笔记
- Canvas学习笔记
- canvas学习笔记
- HTML Canvas学习笔记
- Canvas学习笔记
- canvas学习笔记
- canvas 学习笔记01
- canvas学习笔记02
- canvas学习笔记03
- 微信小程序到底有哪此功能?
- js中的DOM操作汇总
- javascript-对象在内存中的分配
- linux中stat()函数与st_mode用法
- MD5加密算法原理及实现
- canvas学习笔记04
- android实现view滑动的7种方法
- 《人生十论》. 钱穆
- js Date()函数常用方法
- Pandas基础功能备忘录
- 张居正传 - 笔记
- "史上最完整"的Activity和Fragment的生命周期图
- WindowManagerService
- 常用的正则表达式