在PHP中,我可以很容易地指定数组文字:
array(
array("name" => "John", "hobby" => "hiking"),
array("name" => "Jane", "hobby" => "dancing"),
...
)
Run Code Online (Sandbox Code Playgroud)
但是如果我想要一些对象呢?如何在PHP中指定对象文字?即在JavaScript中它将是:
[
{name: "John", hobby: "hiking"},
{name: "Jane", hobby: "dancing"}
]
Run Code Online (Sandbox Code Playgroud) STORE = {
item : function() {
}
};
STORE.item.prototype.add = function() { alert('test 123'); };
STORE.item.add();
Run Code Online (Sandbox Code Playgroud)
我一直想弄清楚这有什么问题.为什么这不起作用?但是,当我使用以下内容时它可以工作:
STORE.item.prototype.add();
Run Code Online (Sandbox Code Playgroud) var test = "test123"
var test123 ={
"key" + test: 123
}
Run Code Online (Sandbox Code Playgroud)
此代码不起作用."关键"+测试有什么问题?
JavaScript有对象文字,例如
var p = {
name: "John Smith",
age: 23
}
Run Code Online (Sandbox Code Playgroud)
和.NET有匿名类型,例如
var p = new { Name = "John Smith", Age = 23}; // C#
Run Code Online (Sandbox Code Playgroud)
类似的东西可以通过(ab)使用命名参数在Python中模拟:
class literal(object):
def __init__(self, **kwargs):
for (k,v) in kwargs.iteritems():
self.__setattr__(k, v)
def __repr__(self):
return 'literal(%s)' % ', '.join('%s = %r' % i for i in sorted(self.__dict__.iteritems()))
def __str__(self):
return repr(self)
Run Code Online (Sandbox Code Playgroud)
用法:
p = literal(name = "John Smith", age = 23)
print p # prints: literal(age = 23, name = 'John Smith')
print p.name …Run Code Online (Sandbox Code Playgroud) 我读过它而不是简单地编写一堆函数,我应该使用object literal.
有人可以用例子来解释对象文字的优点,因为到目前为止我还不明白.
谢谢
我正在研究这个动画功能,但我遇到了问题.我似乎无法执行应该是一项简单的任务,我无法获得一个对象的长度.如果你看看jsFiddle你可以看到我正在运行alert(properties.length);它正在返回undefined.任何人都可以看到为什么这可能是?
Object literal =用花括号包裹的名称值对.
构造函数 =用于使用关键字new创建多个实例的函数.
原型 =用于扩展文字.
这是我到目前为止所理解的.但是我研究得越多,我就越不清楚每一个人的意义是什么.我曾经在我的代码中使用了构造函数,原型和文字几次.但每次我使用它们时,我觉得我仍然没有意识到它的全部潜力.我现在想要成为一个初学者领先一步.我想希望stackoverflow的人帮助我实现它
哪种是最好的编程方式(对象文字与构造函数对原型)
可以使用构造函数和原型来编写代码,只使用对象文字 而不使用构造函数和原型.
什么是匿名函数的重要性.
一个非常简单的例子也证明了它们的重要性.我知道它们是什么,但我不知道它们可以做些什么.
我正在学习在JS中使用对象文字,我试图通过在同一对象中通过另一个函数调用它来获取对象内部的函数.从函数"init"调用函数时,为什么函数"run"不运行?
var runApp = {
init: function(){
this.run()
},
run: function() {
alert("It's running!");
}
};
Run Code Online (Sandbox Code Playgroud) 我一直看到这一点:声明了对象文字,使得某些键被引号括起而其他键则没有.jQuery 1.4.2的一个例子:
jQuery.props = {
"for": "htmlFor",
"class": "className",
readonly: "readOnly",
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
colspan: "colSpan",
tabindex: "tabIndex",
usemap: "useMap",
frameborder: "frameBorder"
};
Run Code Online (Sandbox Code Playgroud)
用引号包装前两个属性键(for和)的重要性是什么,而其他属性键是否class少引用?有任何差异吗?
我一直在讨论ECMAScript 5规范 ; 我能找到的是[ 第15.12.3节的注释6,强调我的 ]:
注6:对象呈现为左开括号,后跟零或多个属性,用逗号分隔,用右大括号关闭.属性是一个带引号的String,表示键或属性名称,冒号,然后是stringified属性值.数组呈现为左括号开头,后跟零个或多个值,用逗号分隔,用右括号关闭.
但是,这仅指JSON 的字符串化.
为什么Python dict构造函数比使用文字语法慢?
在与我的同事进行热烈讨论之后,我做了一些比较并获得了以下统计数据:
python2.7 -m timeit "d = dict(x=1, y=2, z=3)"
1000000 loops, best of 3: 0.47 usec per loop
python2.7 -m timeit "d = {'x': 1, 'y': 2, 'z': 3}"
10000000 loops, best of 3: 0.162 usec per loop
Run Code Online (Sandbox Code Playgroud)
构造函数变慢的原因是什么?在什么情况下,如果有的话,会更快吗?
object-literal ×10
javascript ×7
object ×2
prototype ×2
python ×2
constructor ×1
dictionary ×1
function ×1
json ×1
literals ×1
php ×1
properties ×1
quotes ×1
syntax ×1