select2背后的Javascript功能是什么

select2背后的Javascript功能是什么,javascript,jquery,prototype,jquery-select2,jquery-select2-4,Javascript,Jquery,Prototype,Jquery Select2,Jquery Select2 4,要将一个普通的Html select转换为一个Html select,文档中说只需在普通的Html select上调用select2(),如下所示 $(document).ready(function() { $('.js-example-basic-single').select2(); }); 当我尝试这个方法时,我还导入了通过npm安装的select2模块 import select2 from 'select2'; 允许向现有对象添加新函数(在本例中为.select2())的

要将一个普通的Html select转换为一个Html select,文档中说只需在普通的Html select上调用select2(),如下所示

$(document).ready(function() {
    $('.js-example-basic-single').select2();
});
当我尝试这个方法时,我还导入了通过npm安装的select2模块

import select2 from 'select2';
允许向现有对象添加新函数(在本例中为.select2())的Javascript特性/概念/技术的名称是什么



更新我忘了提到我正在使用jquery,这正是BJRINT所学到的。看来这是一个jquery+select2的东西。

这叫做jquery插件

下面是JQuery的一个片段


有一件事你误解了。您说过要将一个普通的Html select转换为select2,文档中说只需像这样对普通的Html select调用select2(),,但这不是一个普通的Html select元素

使用语法$()时,使用jQuery访问“普通”html元素

正如其他人指出的,Select2能够在这里添加一个方法,因为jQuery有一个可扩展的插件体系结构,允许向主jQuery对象(在您的例子中是$())添加新的行为(方法)

允许向现有对象添加新函数(在本例中为.select2())的Javascript特性/概念/技术的名称是什么

JavaScript具有原型继承,这意味着对象可以从其他对象继承方法。现在,您可以随时向任何对象添加属性,这实际上不是一个特性,而是底层语言设计的结果。在其他语言中,它们被称为扩展函数

现在,对于同样适用的HTML元素:它们继承了
元素
类,您可以轻松地向其原型添加方法:

 Element.prototype.method = function() {
   console.log(this);
 }

 document.body.method();
在您的例子中,您没有直接的HTML元素,而是一个jquery实例对象,它环绕着原生元素对象。然而,继承的基本概念也适用于此,这意味着向
$.fn
添加方法会反映到所有jQuery实例中。这就是插件所做的

允许向现有对象添加新函数的Javascript特性的名称是什么

简短答复: 原型

原型是JavaScript对象相互继承特性的机制。prototype属性可用于向现有构造函数添加方法

有关JavaScript原型的更多详细信息,请参阅上的MDN文档


详细答复:
  • select2是一个jQuery插件。如果您检查它的,您会发现它扩展了
    $.fn
    ,使用了一个名为
    select2
    的新函数:

  • 如果检查jQuery,您会发现
    jQuery.fn
    jQuery.prototype
    的别名:

  • jQuery()
    函数()

  • 而且,在jQuery的源代码中,您可以发现“$”是jQuery对象的别名:

所以,基本上。。。
  • $
    是jQuery()函数的别名
  • $('.js example basic single')
    返回jQuery对象
  • 您的插件使用新方法
    select2()

在stackoverflow的一个线程中,一些用户说某些Jquery版本存在问题,然后选择2。

在stackoverflow中,代码段完全正常工作

我这样做:

$(文档).ready(函数(){
$('.js示例基本倍数')。选择2();
});

阿拉巴马州
...
怀俄明州

了解javascript prototype.monkey-patching?但不仅仅是JavaScript允许这样做,我看到您正在使用JQuery。在本例中,它是lib的创建者制作的名为
插件的基本特性。看看Jquery有一个问题,然后选择2,查看下面我的答案。
  const prototype = { };
  const instance = Object.create(prototype);

  console.log(instance.method); // does not exist yet

 prototype.method = function() { };

 instance.method(); // exists now
 Element.prototype.method = function() {
   console.log(this);
 }

 document.body.method();
$.fn.select2 = function (options) {..}
jQuery.fn = jQuery.prototype = { ... }
window.jQuery = window.$ = jQuery;