首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Jquery扩展文档示例

理解Jquery扩展文档示例
EN

Stack Overflow用户
提问于 2014-12-11 09:57:21
回答 2查看 89关注 0票数 0

我从jQuery文档中获得了这个示例,用于扩展函数:Jquery扩展(最后一个示例)

代码语言:javascript
复制
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
// Merge defaults and options, without modifying defaults
var settings = $.extend( {}, defaults, options );
var printObj = typeof JSON !== "undefined" ? JSON.stringify : function( obj ) {
    var arr = [];
    $.each( obj, function(key, val) {
        var next = key + ": ";
        next += $.isPlainObject(val) ? printObj(val) : val;
        arr.push( next );
    });
    return "{ " + arr.join( ", " ) + " }";
};
$("#log").append("defaults -- " + printObj(defaults) + "");
$("#log").append("options -- " + printObj(options) + "");
$("#log").append("settings -- " + printObj(settings) + "");

在第6行,函数是否被调用?我的意思是,三值运算符是否曾评估为假的??我做了一个console.log(‘函数调用’);函数内部没有得到任何console.logs

另外,请再次查看第6行:

代码语言:javascript
复制
var printObj = typeof JSON !== "undefined" ? JSON.stringify : function( obj ) {

如果你是一名英语老师,教授Jquery,上面的陈述会怎么读?

"check printObj“如果它是JSON类型(如果它是JSON类型而不是JSON.stringify类型),则执行该函数。

现在还有几个重要的补充问题:

JSON.stringify不是应该在争论吗??

JSON.stringify

现在我这样称呼printObj:

代码语言:javascript
复制
 $( "#log" ).append( "defaults -- " + printObj( defaults ) + "" );

回到第6行,特别是下面一行:

代码语言:javascript
复制
typeof JSON !== "undefined"

我在这里查什么??

如果printObj本身是JSON类型??

或者默认值是JSON类型?

当我阅读前面的第6行时,混乱仍在继续:

代码语言:javascript
复制
JSON.stringify

现在JSON.stringify什么?

如果printObj本身是JSON类型??

或者默认值是JSON类型?

我真的很想了解发生了什么,因为我正在尝试建立一个小小的我自己的插头。

谢谢。

特纳利。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-11 10:11:52

请参见:

你所拥有的:

代码语言:javascript
复制
var printObj = typeof JSON !== "undefined" ? JSON.stringify : function( obj ) {};

JSON.stringify为例:

可能是这样的:

代码语言:javascript
复制
JSON = {
          parse:function(args){},
          stringify:function(args){}
       };

因此,stringifyJSON对象中可用的方法。因此,printObjJSON对象获取stringify方法。

现在,当您使用三元操作符condition ? true : false ;时,如果typeof JSON !== "undefined"返回true,那么您的var printObj将获得JSON.stringify方法else,执行自定义函数,并在var printObj块中应用。

向前迈进:

代码语言:javascript
复制
typeof JSON !== "undefined"

,我在这里查什么??

我想说的是,在浏览器中可用的脚本apis中已经定义了一个对象,即ECMA脚本。这个方法JSON.stringify()在当今可用的现代浏览器中是可用的,但是如果有人使用较旧的浏览器,那么它将返回undefined --在本例中,否则块方法将被分配给var printObj以返回与JSON.stringify()相同的输出( js对象的字符串表示/ js对象的序列化)。

如果printObj本身是JSON ??类型

不,printObj是一个变量,它将从JSON.stringify块或函数块中分配一个方法。

这取决于您正在使用的浏览器,运行脚本时,只需简单检查浏览器中的JSON对象是否可用。

或默认值为JSON ??类型

不,正如您在代码中看到的那样,defaults包含一个包含js对象的变量,如果执行此JSON.stringify(defaults),它将创建js对象的字符串表示形式。

代码语言:javascript
复制
JSON.stringify

现在JSON.stringify什么??

当您在三元操作中分配此方法时,如果条件为true,则将其分配给您的var printObj。它是这样的:

代码语言:javascript
复制
var printObj = JSON = {
                  stringify:function(args){}
               };

当你这样做时:

代码语言:javascript
复制
printObj( defaults );

如果printObj本身是JSON ??类型

同样,不,printObj是一个变量,它在post中包含一个JSON.stringify()或其回退的方法。

或默认值为JSON ??类型

不,正如您在代码中看到的那样,defaults包含一个包含js对象的变量,如果执行此JSON.stringify(defaults),它将创建js对象的字符串表示形式。

因此,在此之后,我只想补充一下:

代码语言:javascript
复制
var printObj = typeof JSON !== "undefined" ? JSON.stringify : function( obj ) {};

如果typeof JSON!== undefined (即true ),则将方法赋值给变量,然后分配JSON.stringify()方法,否则分配are块的自定义函数。

票数 0
EN

Stack Overflow用户

发布于 2014-12-11 10:06:25

var printObj =类型JSON !==“未定义”?JSON.stringify :函数( obj ){ 如果你是一名英语老师,教授Jquery,上面的陈述会怎么读?

如果您记住JSON是一个内置于现代浏览器中的对象,这段代码将检查该对象是否可用(它将在不实现它的旧浏览器中返回undefined )。

如果JSON不可用,将以三元形式返回一个函数,以完成JSON.stringify的等效工作。三元用于向printObj变量分配对这些函数中的任何一个的引用(视需要而定)。然后在代码的后面使用这个变量来序列化一个对象。

JSON.stringify不是应该在争论吗??

是的-假设你想调用这个函数。此代码将对函数的引用赋值给变量。

您的困惑似乎源于这样一个事实:这段代码处理的是对函数的引用,而不是直接调用它们。下面是一个简单的例子:

代码语言:javascript
复制
function Foo(bar) {
    console.log(bar);
}

var Fuzz = Foo; // Note, the function reference of Foo is now assigned to Fuzz. Foo is not called.

Fuzz('lorem ipsum'); // This is now invoking the logic of the Foo function via the reference in Fuzz.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27419935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档