Heim  >  Artikel  >  Web-Frontend  >  So implementieren Sie die js-Klasse mithilfe der tangram.js-Bibliothek

So implementieren Sie die js-Klasse mithilfe der tangram.js-Bibliothek

亚连
亚连Original
2018-06-13 14:38:031460Durchsuche

Dieser Artikel stellt hauptsächlich die Art und Weise vor, wie die tangram.js-Bibliothek JS-Klassen implementiert, und analysiert die Erstellung, Vererbung und andere verwandte Betriebstechniken der tangram.js-Bibliotheksimplementierungsklasse in Form von Beispielen

Dieser Artikel Das Beispiel beschreibt, wie die tangram.js-Bibliothek js-Klassen implementiert. Teilen Sie es als Referenz mit allen:

Der vorherige Artikel //www.jb51.net/article/25781.htm gab eine detailliertere Einführung in die tangram.js-Bibliothek analysiert Tangram anhand von Beispielen, wie die .js-Bibliothek js-Klassen implementiert. Der Code lautet wie folgt:

/*
 * 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;
};

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Probleme mit domänenübergreifenden Ressourcenfehlern von React Native

Installieren der neuesten Version von npm in nodejs (ausführliches Tutorial)

So implementieren Sie die Entprellung der Funktion in js (ausführliches Tutorial)

So markieren Sie die Datensatz-Scroll-Position im Vue-Scroller

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die js-Klasse mithilfe der tangram.js-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn