当前位置: 首页 > 面试题库 >

价值,原型和特性的差异

乜栋
2023-03-14
问题内容

好!首先,这个问题来自于一个在jQuery宇宙中挖得太深(很可能迷路)的人。

在我的研究中,我发现了jquery的主要模式是这样的(如果需要的话,欢迎改正):

(function (window, undefined) {

   jQuery = function (arg) {
      // The jQuery object is actually just the init constructor 'enhanced'
      return new jQuery.fn.init(arg);
   },
   jQuery.fn = jQuery.prototype = {
      constructor: jQuery,
      init: function (selector, context, rootjQuery) {
         // get the selected DOM el.
         // and returns an array
      },
      method: function () {
         doSomeThing();
         return this;
      },
      method2: function () {
         doSomeThing();
         return this;,
         method3: function () {
            doSomeThing();
            return this;
         };

         jQuery.fn.init.prototype = jQuery.fn;

         jQuery.extend = jQuery.fn.extend = function () {

            //defines the extend method 
         };
         // extends the jQuery function and adds some static methods 
         jQuery.extend({
            method: function () {}

         })

      })

$启动时,jQuery.prototype.init启动并返回一个元素数组。但我不明白它是如何增加了jQuery的方法类似.css.hide等。到这个数组。

我得到了静态方法。但是用所有这些方法都无法获得返回值和元素数组的方式。


问题答案:

我也不喜欢这种模式。他们有一个init函数,它是所有jQuery实例的构造jQuery函数- 函数本身只是对象创建过程的包装器,包括new

function jQuery(…) { return new init(…); }

然后,他们将那些实例的方法添加到init.prototype对象中。该对象在处作为接口公开jQuery.fn。此外,他们将prototypejQuery函数的属性设置为该对象-
对于不使用该fn属性的用户。现在你有

jQuery.prototype = jQuery.fn = […]init.prototype

但是他们也做两件事:

  • 覆盖constructor原型对象的属性,将其设置为jQuery函数
  • 公开init功能jQuery.fn-自己的原型。这可能允许扩展$ .fn.init函数,但非常令人困惑

我认为他们需要/想要做所有这些事情以防万一,但是他们的代码很烂-从该对象文字开始,然后分配init原型。



 类似资料:
  • 本文向大家介绍JavaScript中关联原型链属性特性,包括了JavaScript中关联原型链属性特性的使用技巧和注意事项,需要的朋友参考一下 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值。 4个描述的行为特性: writable 表示能否修改属性的值。默认为true Enumerable 表示能否过过for in循环返回属性是否可以枚举。 configuralbe 表示是

  • 问题内容: 我建立使用Django干草堆+ Elasticsearch + Django的REST框架小的搜索引擎,而我试图找出重现的Django的行为的方法。 我的索引如下所示: 我想做的事情如下: 但是,Haystack 却没有方法,所以我有点迷失了。我尝试对字段进行分面,然后使用返回的s 列表查询Django ,但这会失去Elasticsearch的性能,并且也使得无法使用Elasticse

  • 前言 JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型。 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现 JavaScript 中的原型继承则要困难的多。 由于 JavaScript 是唯一一个被广泛使用的基于原型继承的语言,所以理解两种继承模式的差异是需要一定时间的

  • 问题内容: “ API参考范围”页面显示: 范围可以从父范围继承。 该开发者指南范围页说: 范围(典型地)从其父范围继承属性。 那么,子作用域是否总是从原型上继承自其父作用域? 有例外吗? 当它继承时,是否总是正常的JavaScript原型继承? 问题答案: 子作用域通常是从其父作用域继承的,但并非总是如此。该规则的一个例外是带有的指令-这会创建一个“隔离”作用域,该作用域不会原型继承。创建“可重

  • 在Prestashop 1.7中,“自定义”特征值和非自定义特征值之间的技术区别是什么(我说的是布尔字段)? 因为为了在DB中保存特征值,我想在初始化我的对象的属性之后使用。其中包括布尔值

  • 值类型或引用类型?结构体或类?什么时候你需要使用它们?这不是 C++ ,定义的类型为值类型可以当做引用类型使用。这也不是 Java ,所有类都是引用类型(除非你是语言设计者之一)。当你创建类的时候你就需要决定这个类所有实例的行为。在开始的时候就要做好这个重要的选择。你必须面对这个选择的后果因为改变之前的选择会引起一些代码的破坏。创建类型的时候只是很简单的选择 struct 和 class 关键字,