这个问题有意地像 这个问题.
我甚至都不知道这是否可行,我记得有些模糊地听到一些关于JS中无法枚举的属性的东西.
无论如何,简而言之:我正在js框架上开发一些东西,我没有文档,也没有简单的代码访问权限,这将非常有助于知道我可以用我的对象做什么.
Server以JSON格式返回对象数组.它看起来如此:
{"d":"[
{\"Id\":1,\"IsGood\":true,\"name1\":\"name1dsres\",\"Name2\":\"name2fdsfd\",\"name3\": \"name3fdsgfd\",\"wasBorn\":\"\\/Date(284011000000)\\/\"},
{\"Id\":2,\"IsGood\":false,\"name1\":\"fdsfds\",\"name2\":\"gfd3im543\",\"name3\":\"3543gfdgfd\",\"WasBorned\":\"\\/Date(281486800000)\\/\"}
]"}
Run Code Online (Sandbox Code Playgroud)
我需要使用JSON.parse函数进行解析.我是这样做的:
function myFunction(dataFromServer){
var parsedJSON = JSON.parse(dataFromServer.d);
for (var item in parsedJSON.d) {
// how do I get the fields of current item?
}
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,它返回undefined
for (var item in parsedJSON) {
alert(item.Id);
}
Run Code Online (Sandbox Code Playgroud) 需要明确的是,继承DynamicObject的类(当然是C#)与JavaScript的动态变量不同。DynamicObject允许实现者以编程方式确定对象具有哪些成员,包括方法。
编辑:我知道JavaScript对象可以在运行时添加任何成员。那根本不是我在说什么。这是一个C#示例,展示了DynamicObject的功能:
public class SampleObject : DynamicObject
{
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = binder.Name;
return true;
}
}
dynamic obj = new SampleObject();
Console.WriteLine(obj.SampleProperty);
//Prints "SampleProperty".
Run Code Online (Sandbox Code Playgroud)
当访问obj的成员时,它将使用TryGetMember以编程方式确定该成员是否存在及其值。简而言之,成员的存在是在请求时确定的,而不是事先添加成员。我希望这可以使问题有所澄清。如果您想知道,我正在尝试确定是否有可能在JavaScript中创建对象,当在其上使用函数调用语法时,如下所示:
myAPI.uploadSomeData(data1, data2)
Run Code Online (Sandbox Code Playgroud)
uploadSomeData调用转到“ TryGetMember”之类的函数,该函数使用名称“ uploadSomeData”执行$ .ajax调用以生成URL,并且返回值是结果。
我喜欢Object.getOwnPropertyNames方法.它似乎是一个从JS shell中学习对象的有用工具.
然而,令我疯狂的是,getOwnPropertyNames似乎缺少一些(注意:在我的测试中,我运行的是ECMA 5实现 - 谷歌Chrome版本28.0.1500.95).
这是一个例子:
> var x= []
undefined
> x.constructor
function Array() { [native code] }
> Object.getOwnPropertyNames(x)
["length"]
Run Code Online (Sandbox Code Playgroud)
很明显,x有很多属性!(例如https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype)
> x.push
function push() { [native code] }
> x.pop
function pop() { [native code] }
Run Code Online (Sandbox Code Playgroud)
谁能帮忙解释一下这里发生了什么?谢谢!:d
编辑:好的!我看到getOwnPropertyNames只获取手头对象的属性名称.有没有一种简单的方法来获得继承属性?或者也许唯一的方法是遍历object.constructor.prototype .__ proto__?
我知道不可能绑定到所有DOM事件,我知道你可以通过提供以空格分隔的列表来绑定到多个事件.
但是可以绑定到所有自定义事件(最好通过像'abc*'或name-space这样的通配符模式进行过滤)吗?
编辑: 为了澄清,我创建了一些响应某些自定义事件的自定义小部件.例如,它们都处理一个名为"stepReset"的事件并重置其内部模型.
在我写完这些之后,我意识到事件不会消失,所以这个电话$(body).trigger('stepReset')基本上什么也没做.因此,我正在考虑在所有小部件的父元素上添加一个伞状事件处理程序,以传播所有相关事件.
(我知道这不是一个优雅的解决方案,但我忘了用一个普通类的处理程序标记元素,所以没有简单的方法可以使用它们全部选择.)
假设我有如下 JSON 数据:
var db=[
{"name":"John Doe","age":25},
{"name":"John Doe 2","age":21}
]
Run Code Online (Sandbox Code Playgroud)
我知道如何使用 js/jquery 从 JSON 对象中检索数据。我需要的是获取标签的值,即我想从对象中检索“名称”和“年龄”。我实际上并不想检索值“John Doe”和 25(我已经可以这样做了),而是我想要标签。
假设 JSON 对象有大约 5 个数据,每个数据有 10 个字段。我需要以表格形式动态显示 JSON,我已经可以这样做了。由于 JSON 可能是任何一组值,我不知道<th></th>在表格的单元格中放置什么标签。所以我需要一种方法来获取标签。
使用伪代码:
var db=[
{"name":"John Doe","age":25},
{"name":"John Doe 2","age":21}
]
for i in db{
for j in db[i]{
console.log(db[i][j].label+":"db[i][j])
}
}
//db[i][j].label doesn't really work
Run Code Online (Sandbox Code Playgroud)
输出应该是:
姓名:约翰·杜
年龄:25
姓名:约翰·杜
年龄:21
是否有 JavaScript 或 jQuery 函数可以这样做或其他一些方法来检索所需的数据?
我有这样的代码:
$scope.role.object_access_right = {contact:1,group:1,image:1,text:1,email_template:1,email:1,channel:1,campaign:1,invoice:1,user:1,account:1,tenant:1,}
Run Code Online (Sandbox Code Playgroud)
我这里有空数组,
$scope.access = [];
Run Code Online (Sandbox Code Playgroud)
如何将键推到空数组才能得到结果?
$scope.access = [contact,group,text ...]
Run Code Online (Sandbox Code Playgroud) 例子:
<script type="text/javascript">
function test() {
console.log("Hello world");
}
</script>
Run Code Online (Sandbox Code Playgroud)
我该怎么称呼test()?
编辑:我没有正确解释这一点。
我正在使用 node.js 的请求模块来加载包含 javascript 函数的外部 html 文件:
request.get(options, function (error, response, body) {
if (error && response.statusCode !== 200) {
}
else {
jsdom.env({
html: body,
scripts: ["../jquery-1.6.4.min.js"]
}, function (err, window) {
var $ = window.jQuery;
Run Code Online (Sandbox Code Playgroud)
我只是在寻找在“body”中调用函数的语法。