通过检查jQuery元素更好地理解Javascript

前端之家收集整理的这篇文章主要介绍了通过检查jQuery元素更好地理解Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
因为jQuery是一个广泛使用和成熟的协作工作,我不禁要在编写更好的 Javascript时查看其源代码以获得指导.我一直使用jQuery库和我的程序,但是当我看到这个相当复杂的库的内幕时,我意识到我仍然不了解Javascript.罗,我对SO社区有几个问题.首先,请考虑以下代码……
$('#element').attr('alt','Ivan is SUPER hungry! lolz');

VS

$('#element').attr({'alt': 'Ivan is an ugly monster! omfgz'});

现在,这是说attr()方法被设计为接受EITHER属性名称,属性名称和值,还是配对值映射?有人能给我一个简短的解释,说明地图实际上是什么,以及它与Javascript中的数组有什么不同?

继续前进,整个图书馆都包含在这个行业……

(function(window,undefined) { /* jQuery */ })(window);

我知道包装的括号会导致类似于body onLoad =“function();”的行为,但是这个实践被称为什么,它与使用onLoad事件处理程序有什么不同?另外,我不能在那里做(窗口)位的头或尾.这里的窗口对象到底发生了什么?

在评估中我是否错误,对象与Javascript中的函数没有什么不同?如果我错了,请纠正我,但$()是包含所有jQuery对象,但它看起来就像一个方法.这是代码示例的另一个快速问题…

$('#element').attr('alt','Adopt a Phantom Cougar from Your Local ASPCA');

……内部应该看起来像这样(也许我错了)……

function $(var element = null) {
    if (element != null) {
        function attr(var attribute = null,var value = null) {
            /* stuff that does things */
        }
    }
}

这是在Javascript中定义对象及其子方法属性的常规过程吗?将Javascript与PHP进行比较,您是否使用了句点.你会用同样的方法 – >从对象中检索方法

我为这有点冗长而道歉,但对这些问题的回答将对我揭示jQuery和Javascript的一般情况.谢谢!

解决方法

1.方法重载

$(‘#element’).attr(‘alt’,’Ivan是超级饥饿!lolz’);

VS

$(‘#element’).attr({‘alt’:’伊万是一个丑陋的怪物!omfgz’});

var attr = function (key,value) {
  // is first argument an object / map ?
  if (typeof key === "object") {
    // for each key value pair
    for (var k in key) {
      // recursively call it.
      attr(k,key[k]);
    }
  } else {
    // do magic with key and value
  }
}

2.关闭

(function(window,undefined){/ * jQuery * /})(window);

不用作onload处理程序.它只是在函数内创建新范围.

这意味着var foo是局部变量而不是全局变量.它还创建了一个真正的未定义变量,因为未指定的参数未定义

这个gaurds反复使用window.undefined = true,这是有效/允许的.

the (window) bit there at the end. What exactly is happening with the window object here?

它通过使其本地化来微观优化窗口访问.本地变量访问比全局变量访问快约0.01%

Am I wrong in the assessment that objects are no different than functions in Javascript?

是的,不是.所有功能都是对象. $()只返回一个新的jQuery对象,因为它在内部调用返回new jQuery.fn.init();

你的片段

function $(var element = null){

Javascript不支持默认参数值或可选参数.模拟这种情况的标准做法如下

function f(o) {
  o != null || (o = "default");
}

Comparing Javascript to PHP,do you use a period . the same way you would use -> to retrieve a method from an object?

您可以使用foo.property或foo [“property”]访问对象的属性,属性可以是任何类型,包括函数/方法.

4.你问题中隐藏的杂乱问题

Can someone give me a short explanation of what a map actually is and the important ways that it differs from an array in Javascript?

使用var a = []创建一个数组,它只包含一个键值对列表,其中所有键都是正数.它也拥有所有Array methods.数组也是对象.

地图只是一个对象.对象只是一包键值对.您在对象上的键下分配一些数据.该数据可以是任何类型.

猜你在找的jQuery相关文章