我一直在寻找关于报废ECMAScript第4版的一些信息,但没有取得多大成功,即使在SO上也是如此.我知道Mozilla的JavaScript 1.7实现了第4版中提供的许多(全部?)新功能,我想我记得有一篇好的John Resig帖子,但我现在似乎无法在他的博客上找到它.
特别是,我想知道为什么它完全取消了ECMA-262第5版以及为什么它不仅仅是改进.一些功能非常酷,如生成器,迭代器,let,新赋值运算符和(我特别喜欢的)解构赋值.
我知道所有这些特殊功能只会在具有过时ECMAScript实现的浏览器中抛出错误,但为什么不包括它们,知道有一天这些实现很少而且很远?还有其他原因吗?我们是否可能会在未来的版本中看到一些报废功能重新出现,或者供应商是否害怕破坏兼容性,我们可能永远不会看到标准的这些改进?
顺便说一句,知道一些关于这个问题的意见会很高兴,你是否对从第5版中删除某些功能感到恼火,或者你认为这样做会更好?是否值得玩ECMAScript 4的实现?
我正在尝试学习JSON,我了解到任何带有双引号键的javascript对象都被视为JSON对象.
我构建了这个对象
var jstr1 = {"mykey": "my value"};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用JSON.parse(jstr1)进行解析时,我收到以下错误.看截图.

但是,当我试图解析这个
var jstr = '{"mykey": "my value"}';,
Run Code Online (Sandbox Code Playgroud)
我获得了成功,请看截图.我对此感到困惑.请解释我为什么会这样.这两种形式有什么区别.
当我将JSON作为来自任何服务的响应时,它的外观如何,是否会以jstr或的形式出现jstr1
提前感谢您的帮助.
在函数的输入中是具有这种结构的对象:
{
tag: 'a', //type of html object
content: "blabal", //inner content
attr: {
href: "vk.com",
id: 'someId'
},
events: {
click: 'alert(this.href)',
focus: 'this.className="active"'
},
style: {
width:"100px"
}
}
Run Code Online (Sandbox Code Playgroud)
它描述了一个HTML元素.它必须返回具有指定属性的HTML元素.怎么解析呢?我有这样的事情:
elemen={
tag:'a',
content:"blabal",
attr:{
href:"vk.com",
id:'someId'
},
events:{
click:'alert(this.href)',
focus:'this.className="active"'
},
style:{
width:"100px"
}
};
console.log(elemen.tag);
var node = document.createElement(elemen.tag);
node.innerHTML= elemen.content;
for(var prop in elemen.events){
var fun =new Function(elemen.events[prop]);
console.log(fun);
node.bind(prop, fun);
// divv.bind(prop, fun);
}
Run Code Online (Sandbox Code Playgroud) 我有JSON对象,我想检查在该JSON对象中设置的键
这是JSON对象
var Data_Array = {
"Private": {
"Price": {
"Adult": "18",
"Child": [{
"FromAge": "0",
"ToAge": "12",
"Price": "10"
}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果JSON Object像这样你可以看到Child不存在,那么如何检查这个
var Data_Array = {
"Private": {
"Price": {
"Adult": "18"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了
if(Data_Array.Private.Price.Child[0].Price != "undefined"){
...
}
Run Code Online (Sandbox Code Playgroud)
但它告诉我这个错误
未捕获的TypeError:无法读取属性
我无法知道我该怎么做.
我正在 Lodash 函数的帮助下比较两个对象isEqual,并尝试通过函数找出差异difference。
该difference函数返回整个对象,而不是仅返回那些不同的属性。
有没有办法只找到对象中不匹配的属性?
我对Object Literals,JSON,JavaScript Objects对人们究竟是什么意思感到困惑,对我来说它们看起来很相似:
{foo: 'bar', bar : 'baz'}
Run Code Online (Sandbox Code Playgroud)
AFAIK,上面是对象文字,json以及javascript对象,不是吗?
object literal和json是否意味着同样的事情?
你们如何区分哪个是什么?
我有一个动态的json对象,它可以在内部包含不同类型的属性和对象,甚至可以包含平面字符串甚至数组。我制作了一个JavaScript代码,将单个JSON结构转换为HTML表,效果很好,但id希望将其用于动态JSON,因此基本上,我需要遍历JSON树的父级和子级,以了解如何创建此结构HTML表格。
但是在尝试验证孩子是否有对象时确实存在一些问题,例如:(我不想在JSON中添加很多细节)
parent: {
child_1: {
attr1 : value1
},
child_2: {
[{ attribues and values in an array }]
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我当时正在考虑像这样使用“ typeof”函数:
if (typeof key === 'array') {
// do something
}else{
// do another stuff
}
Run Code Online (Sandbox Code Playgroud)
但是我不相信它会很好,你们能帮我吗?
提前致谢。
这个问题更多的是关于支持和向后兼容性.我测试了以下代码.
function newFunc() {}
newFunc.prototype = {
literal : {
init : function() {
console.log(this);
this.test();
},
test : function() {
console.log('test');
}
}
}
var inst = new newFunc();
inst.literal.init();
Run Code Online (Sandbox Code Playgroud)
这是有效的,虽然我没有在任何其他代码中看到对象文字作为原型.是否有一个原因?这似乎是一种合乎逻辑的编码方式,虽然我不想追求它,如果它有严重的陷阱.
我有一个文本框和旁边的按钮.我想通过Jquery ajax调用webmethod发送文本框的内容并获取相同的大写值并在alert中显示.到目前为止,我有这个代码,但它不起作用.
JAVASCRIPT:
function CallWM()
{
var name = $('#name').val();
RealCallWM(name);
}
function RealCallWM(name) {
$.ajax({
url: 'Register.aspx/UpperWM',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: { name: JSON.stringify(name) },
success: OnSuccess(response),
error: function (response) {
alert(response.responseText);
}
})
};
Run Code Online (Sandbox Code Playgroud)
HTML:
Name: <input id="name" type="text" />
<input id="Button1" type="button" value="button" onclick="CallWM();"/></div>
</form>
Run Code Online (Sandbox Code Playgroud)
WEB方法:
[WebMethod]
public static string UpperWM(string name )
{
var msg=name.ToUpper();
return (msg);
}
Run Code Online (Sandbox Code Playgroud)