util.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //文本节点重复利用
  2. export var recyclables={
  3. '#text':[]
  4. }
  5. export function mergeState(instance) {
  6. var newState;
  7. var prevState = instance.state;
  8. if (instance.mayInst.mergeStateQueue && instance.mayInst.mergeStateQueue.length > 0) {
  9. var queue = instance.mayInst.mergeStateQueue;
  10. var newState = extend({}, prevState);
  11. for (var i = 0; i < queue.length; i++) {
  12. var s = queue[i];
  13. if (s && s.call) {
  14. s = s.call(instance, newState, instance.nextProps || instance.props);
  15. }
  16. newState = extend(newState, s);
  17. }
  18. instance.mayInst.mergeStateQueue.length = 0;
  19. } else {
  20. newState = prevState;
  21. }
  22. return newState;
  23. }
  24. // export function eventProxy(e) {
  25. // return this._listener[e.type](e);
  26. // }
  27. export function extend(target, src) {
  28. for (var key in src) {
  29. if (src.hasOwnProperty(key)) {
  30. target[key] = src[key];
  31. }
  32. }
  33. return target;
  34. }
  35. /**
  36. * 寄生组合式继承
  37. * @param {*} target
  38. * @param {*} superClass
  39. */
  40. export function inherits(target, superClass) {
  41. function b() { };
  42. b.prototype = superClass.prototype;
  43. var fn = target.prototype = new b();
  44. fn.constructor = target;
  45. return fn;
  46. }