微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过检查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.数组也是对象.

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

原文地址:https://www.jb51.cc/jquery/178244.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐