Tag: JavaScript

安全地将JSONstring转换为对象

给定一串JSON数据,你怎么能安全地把这个string转换成一个JavaScript对象? 显然你可以用这样的东西不安全地做… var obj = eval("(" + json + ')'); …但是这让我们容易受到包含其他代码的jsonstring的影响,这对于简单的eval来说似乎非常危险。

不是承诺只是callback?

我一直在开发JavaScript几年,我根本不明白承诺的大惊小怪。 看来我所做的只是改变: api(function(result){ api2(function(result2){ api3(function(result3){ // do work }); }); }); 我可以使用类似asynchronous的库,像这样: api().then(function(result){ api2().then(function(result2){ api3().then(function(result3){ // do work }); }); }); 哪些是更多的代码和更less的可读性。 我在这里没有获得任何东西,也不是突然神奇的“平坦”。 更不用说把事情转化为承诺。 那么,在这里承诺有什么大惊小怪呢?

jQuery的$ .ready()的纯JavaScript等价物 – 如何在页面/ DOM准备好时调用一个函数

好吧,这可能只是一个愚蠢的问题,虽然我确信还有很多其他人不时地提出同样的问题。 我,我只是想100%确定这一点。 有了jQuery,我们都知道这很棒 $('document').ready(function(){}); 然而,假设我想运行一个用标准JavaScript编写的函数,而没有库支持它,而且我希望在页面准备好处理它时立即启动一个函数。 什么是正确的方法来解决这个问题? 我知道我可以这样做: window.onload="myFunction()"; …或者我可以使用body标签: <body onload="myFunction()"> …或者甚至可以在页面的底部尝试所有内容,但最终的body或html标签如: <script type="text/javascript"> myFunction(); </script> 什么是以jQuery的$.ready()方式发布一个或多个函数的跨浏览器(旧/新)兼容的方法?

JavaScript对象:按string名称访问variables属性

如果我有一个如下所示的JavaScript对象 var columns = { left: true, center : false, right : false } 我有一个函数,传递对象,和一个属性名称如此 //should return false var side = read_prop(columns, 'right'); read_prop(object, property)外观是什么样的?

当我把它的名字作为一个string的时候如何执行一个JavaScript函数

我有一个JavaScript函数的名称作为一个string。 如何将其转换为函数指针,以便稍后调用它? 根据具体情况,我可能也需要将各种理由传递给方法。 一些函数可能采用namespace.namespace.function(args[…]) 。

检测手机浏览器

我正在寻找一个函数,返回布尔值,如果用户有移动浏览器或没有。 我知道我可以使用navigator.userAgent并使用正则expression式写这个函数,但是用户代理对于不同的平台来说太多了。 我怀疑匹配所有可能的设备是否容易,我认为这个问题在很多时候已经解决了,所以应该有这样一个完整的解决scheme。 我正在看这个网站 ,但遗憾的是这个脚本太神秘了,我不知道如何将它用于我的目的,即创build一个返回true / false的函数。

使用“let”和“var”声明一个variables有什么区别?

ECMAScript 6引入了let语句 。 我听说它被描述为一个“本地”variables,但我还不太确定它的行为与var关键字不同。 有什么区别? 什么时候应该let var ?

什么时候JavaScript的eval()不是邪恶的?

我正在编写一些JavaScript代码来parsing用户input的函数(对于类似电子表格的function)。 parsing了公式之后,我可以将它转换成JavaScript并在其上运行eval()以产生结果。 但是,如果我可以避免使用eval() ,因为它是邪恶的(而且,无论正确还是错误,我一直认为它在JavaScript中更加邪恶,因为要评估的代码可能会改变由用户)。 那么,什么时候可以使用它?

为什么不能自动closures脚本标签?

浏览器不能正确识别的原因是什么? <script src="foobar.js" /> <!– self-closing script tag –> 只有这一点被认可: <script src="foobar.js"></script> 这是否打破了XHTML支持的概念? 注意:至less对于所有的IE(6-8 beta 2)这个说法是正确的。

你如何在正则expression式中使用variables?

我想在JavaScript中创build一个String.replaceAll()方法,我想使用正则expression式将是最简单的方法来做到这一点。 但是,我不知道如何将一个variables传递给RegEx。 我已经可以做到这一点,它将用“A”代替“B”的所有实例。 "ABABAB".replace(/B/g, "A"); 但是我想要做这样的事情: String.prototype.replaceAll = function(replaceThis, withThis) { this.replace(/replaceThis/g, withThis); }; 但显然这只会取代文本“replaceThis”…所以如何将这个variables传递给我的RegExstring?