__proto__适用于Internet Explorer IE 10的解决方法

use*_*759 5 javascript html5 prototype prototypal-inheritance

我们在工作时使用自定义JavaScript库:

DOM.__proto__ = Library.prototype;
Run Code Online (Sandbox Code Playgroud)

快速传输内部函数/属性DOM对象,以便它可以像jQuery一样使用它.

对于一个新项目,我们需要为Internet Explorer实现它,但不幸的__proto__是IE不支持.

对于这种填充物的任何想法,解决方法?该要求仅限IE10(但IE9也不错).

Jam*_*son 1

您可以用 API 包装它,而不是直接扩展 DOM 元素;

// Wrapping Constructor
function Library(element) {
  this.element = element;
}

// Whatever it is your library does
Library.prototype = {
  // some example method
  html: function(markup) {
    // refer to "this.element" instead of "this"
    this.element.innerHTML = markup;
  }
};

// example
var wrappedElement = new Library(document.getElementById('unique'));

// refer to the API rather than the Element directly
wrappedElement.html('<span>Hello World</span>');
Run Code Online (Sandbox Code Playgroud)

您还可以通过使用此技术安全地子类化 Array来进一步扩展 Library 。

希望这有帮助,谢谢。