Javascript 什么';document.createRange()和new Range()之间的区别是什么?

Javascript 什么';document.createRange()和new Range()之间的区别是什么?,javascript,dom,range,Javascript,Dom,Range,在Javascript中,似乎有两种方法可以创建Range对象: var range=document.createRange():在document对象上调用createRange() var range=new range():使用range()构造函数 样式1的MDN注释: 创建范围后,需要先设置其边界点,然后才能使用其大多数方法 style#2的MDN说: Range()构造函数返回一个新创建的Range对象,其开始和结束是全局文档对象 但这并不能确切地告诉我两者之间的区别 然而,在写这

在Javascript中,似乎有两种方法可以创建
Range
对象:

  • var range=document.createRange()
    :在
    document
    对象上调用
    createRange()
  • var range=new range()
    :使用
    range()
    构造函数 样式1的MDN注释:

    创建范围后,需要先设置其边界点,然后才能使用其大多数方法

    style#2的MDN说:

    Range()构造函数返回一个新创建的Range对象,其开始和结束是全局文档对象

    但这并不能确切地告诉我两者之间的区别

    然而,在写这篇文章的时候,style#2的MDN顶部有一条注释说:

    这是一项实验技术

    而且,重要的是,IE目前似乎还不支持style#2用于创建
    范围
    对象的语法

    除此之外,在创建
    范围
    的方式或创建
    范围
    对象的任何一种方法返回的内容方面,两者之间是否存在任何(细微)差异

    如果我误用了任何术语,请提前道歉——如果我误用了,请纠正我,因为我对这些概念还很陌生

    谢谢

    基于,两者之间没有差异(强调):

    调用createRange()方法时,必须返回一个新的活动范围,以(this,0)作为其开始和结束

    注意:可以改用Range()构造函数。

    实际上,
    document.createRange()
    new Range()
    都返回
    startOffset
    endOffset
    设置为0的对象:

    {
      collapsed: true,
      commonAncestorContainer: /* object of type document */,
      endContainer: /* object of type document */,
      endOffset: 0,
      startContainer: /* object of type document */,
      startOffset: 0
    }