This article mainly introduces the way in which tangram.js library implements js classes, and analyzes the creation, inheritance and other related operating techniques of tangram.js library implementation classes in the form of examples. Friends who need it can
This article The example describes how the tangram.js library implements js classes. Share it with everyone for your reference. The details are as follows:
The previous article //www.jb51.net/article/25781.htm gave a more detailed introduction to the tangram.js library. Here we analyze tangram with examples. The way the .js library implements js classes. The code is as follows:
/* * Tangram * Copyright 2010 Baidu Inc. All rights reserved. * * @author: meizz * @namespace: baidu.lang.createClass * @version: 1.6.0 */ ///import baidu.lang; ///import baidu.lang.Class; ///import baidu.lang.Event; /** * 创建一个类,包括创造类的构造器、继承基类Class * @name baidu.lang.createClass * @function * @grammar baidu.lang.createClass(constructor[, options]) * @param {Function} constructor 类的构造器函数 * @param {Object} [options] * @config {string} [type] 类名 * @config {Function} [superClass] 父类,默认为baidu.lang.Class * @version 1.2 * @remark * 使用createClass能方便的创建一个带有继承关系的类。同时会为返回的类对象添加extend方法,使用obj.extend({});可以方便的扩展原型链上的方法和属性 * @see baidu.lang.Class,baidu.lang.inherits * * @returns {Object} 一个类对象 */ baidu.lang.createClass = /**@function*/function(constructor, options) { options = options || {}; var superClass = options.superClass || baidu.lang.Class; // 创建新类的真构造器函数 var fn = function(){ var me = this; // 20101030 某类在添加该属性控制时,guid将不在全局instances里控制 options.decontrolled && (me.__decontrolled = true); // 继承父类的构造器 superClass.apply(me, arguments); // 全局配置 for (i in fn.options) me[i] = fn.options[i]; constructor.apply(me, arguments); for (var i=0, reg=fn["\x06r"]; reg && i<reg.length; i++) { reg[i].apply(me, arguments); } }; // [TODO delete 2013] 放置全局配置,这个全局配置可以直接写到类里面 fn.options = options.options || {}; var C = function(){}, cp = constructor.prototype; C.prototype = superClass.prototype; // 继承父类的原型(prototype)链 var fp = fn.prototype = new C(); // 继承传参进来的构造器的 prototype 不会丢 for (var i in cp) fp[i] = cp[i]; // 20111122 原className参数改名为type var type = options.className || options.type; typeof type == "string" && (fp.__type = type); // 修正这种继承方式带来的 constructor 混乱的问题 fp.constructor = cp.constructor; // 给类扩展出一个静态方法,以代替 baidu.object.extend() fn.extend = function(json){ for (var i in json) { fn.prototype[i] = json[i]; } return fn; // 这个静态方法也返回类对象本身 }; return fn; };
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
React Native’s cross-domain resource error issues
##Install the latest version of npm in nodejs (detailed tutorial)
How to implement function debounce in js (detailed tutorial)
How to mark and record the scroll position in vue-scroller
The above is the detailed content of How to implement js class using tangram.js library. For more information, please follow other related articles on the PHP Chinese website!